Storage unit subsystem

ABSTRACT

When receiving a write request from a processor, a control unit checks the condition of existence (or the presence/absence) in a cache for information necessary for generation of an updated value of a parity record, receives write data and reports the completion of the write request to the processor. In asynchronism with the write request from the processor, the control unit performs a load process for that information among the information necessary for generation of the updated value of the parity record which may be prepared in asynchronism with the write request from the processor and a write after process for the updated value of the parity record.

BACKGROUND OF THE INVENTION

[0001] The present invention relates to a method for controlling acontrol unit with cache memory for a disk array and a storage unitsubsystem which is composed of an array of disks ad a control unit withcache memory.

[0002] The prior art most relevant to the present invention is David A.Patterson et al, “A Case for Redundant Arrays of Inexpensive Disks(RAID)”, ACM SIGMOD Conference Proceeding, Chicago, Ill., June 103,1988, pp. 109-116.

[0003] The Patterson et al's article discloses a technique concerningthe distribution of data on a disk array.

[0004] A disk array is physically composed of a plurality of small scaledisk units but it is a disk system which operates as one disk unit for aprocessor. Namely, the disk array is a mechanism for attainingperformance improvement and high reliability.

[0005] The Patterson et al's article proposes some data distributionmethods. According to a typical one of the disclosed data distributionmethods, a record as a read/write unit for a processor is distributed ona disk unit as it is. In the invention, the distribution willhereinafter be referred to as data distribution by record. The Pattersonet al's article also proposes a data distribution method in which onerecord is divided into a plurality of data and the individual data aredistributed on a plurality of disk units, respectively. Thisdistribution is referred as ROAID4 or RAID5. A feature of the datadistribution by record lies in that a read/write process can beindependently performed for each of disk units which constitute the diskarray. In the case where one record is divisionally distributed on aplurality of disk units, a read/write process for one record monopolizesthe plurality of disk units. Accordingly, in the case of the datadistribution by record, the concurrency of read/write processes capableof being performed in the disk array is improved, thereby attaining theimprovement in the performance of the whole of the disk array.

[0006] On the other hand, the high reliability of the disk array isrealized in such a manner that redundant data called parity data arestored in disk units. Hereinafter, a record storing data read/written bya processor will be referred as a data record, and a record storingredundant data will be referred as a parity record. In the datadistribution by record, a parity record is generated from a group ofdata records each of which is stored in each disk unit in a disk array.An assembly of a parity record and data records from which the parityrecord is generated, is termed a parity group. Usually, records in thesame parity group are stored in separate disk units. One parity groupmay include one or more parity records.

[0007] In the case where an error occurs in any one of data records fromwhich a parity record was generated, the content of the faulty datarecord is recovered from the contents of the parity record and the otherdata records. Accordingly, even if an error occurs in any disk unit inthe assembly of disk units in which a parity group is stored, data canbe recovered. Usually, if the number of parity records in one paritygroup is n, data in the parity group can be recovered even if errorsoccur in at the largest n disk units.

[0008] In the case of the data distribution mentioned above, theupdating of a parity record becomes necessary each time the content of adata record is changed by a write process. Therefore, the performancefor write process is degraded as compared with the conventional diskdevice. In addition, the determination of an updated value of the parityrecord needs a preprocess for obtaining one of the following sets (1)and (2) of values:

[0009] (1) the update before values of the data record made the objectof the write process and the parity record; and

[0010] (2) the values of other data records in a parity group to whichthe data record made the object of the write process belongs.

[0011] The values mentioned by (1) can be acquired with small overhead.Therefore, in the case where the write process occurs, a method ofacquiring the values mentioned by (1) is usually employed. In order toread the values mentioned by (1), disk unit access must be made twiceeven in the case where only one parity record is included in the paritygroup. Further, in order to write the updated value of the data recordmade the object of the write process and the updated value of the parityrecord, disk unit access must be made twice. Accordingly, the diskaccess is required four times in total. In the case of the conventionaldisk, on the other hand, it is only required that the updated value of arecord made the object of a write process should be written into a diskunit. Namely, the number of disk accesses required for a write requestin the disk array using the data distribution by record is four times ofthat in the conventional disk.

[0012] There is not known a technique concerning the speedup of a writeprocess in the disk array which uses the data distribution by record.But, the following techniques are known as techniques for the speedup ofa write process in a general disk unit.

[0013] JP-A-55-157053 discloses a technique for improving the speed of awrite request in a control unit having a disk cache by using a writeafter process. The control unit completes a write process at a stage oftime when write data received from a processor is written into thecache. Thereafter, the data stored in the cache is written into a diskunit through a write after process by the control unit.

[0014] JP-A-59-135563 discloses a technique concerning a control unitwhich makes the speedup of a write process while ensuring highreliability. The control unit has a nonvolatile memory as well as acache memory so that write data received from a processor is stored inthe cache memory and the nonvolatile memory. The write data is writteninto a disk unit through a write after process by the control unit.Thereby, the high reliability of the write after process is attained.

[0015] JP-A-60-114947 discloses a technique concerning a control unitwhich controls disk units for double-write and has a cache memory ordisk cache. When receiving a write request from a processor,r thecontrol unit writes write data received from the processor into one diskunit and the cache memory. In asynchronism with a read/write requestfrom the processor, the control unit writes the write data stored in thecache memory into the other disk unit later on.

[0016] JP-A-2-37418 discloses a technique for attaining the speedup byapplying a disk cash to disk units for double-write. A control unit hasa nonvolatile memory as well as a cache memory so that write datareceived from a processor is stored in the cache memory and thenonvolatile memory. The control unit writes the write data into two diskunits through a write after process.

[0017] JP-A-3-37746 discloses a technique concerning a control unitwhich has a disk cache and performs a write after process, or moreparticularly, a technique concerning a management data structure ofwrite after data in the disk cache which is intended for efficientexecution of the write after process in such a control unit.

[0018] Each of the above prior arts disclosing a write after processusing a disk cache (hereinafter asimply abbreviated to cache) for anusual or conventional disk unit shows a simple technique by which writedata received by the cache from a processor is written into the diskunit. However, in the case of a disk array using the data distributionby record, it is necessary to generate the updated value of a parityrecord. Therefore, the overhead for a write process becomes large ascompared with the conventional disk unit. Accordingly, how to generatethe updated value of the parity record furnishes a key for the speedupof the write process in the disk array using the data distribution byrecord. On the contrary, in the conventional disk unit, suchconsideration is unnecessary since the updated value of a parity recordis not required.

SUMMARY OF THE INVENTION

[0019] An object of the present invention is to improve the efficiencyof generation of an updated value of a parity record, thereby attainingthe improvement in performance of a write process for a disk array whichuses the data distribution by record. Basically, a control unit of thepresent invention too performs a write after process using a cache, likethe case of a control unit for the conventional disk unit. However, thecontrol unit of the present invention efficiently makes the generationof an updated value of a parity record which is not disclosed by theprior art.

[0020] To achieve the above object, a control unit according to anembodiment of the present invention is provided with two kinds ofmechanisms by which that information which are necessary for generationof an updated value of a parity record and do not exist in a disk cache,are loaded into the disk cache.

[0021] The first mechanism loads, that information which are necessaryfor generation of the updated value of the parity record and have to beprepared in synchronism with a write request received from a processor,from a disk unit into the disk cache in synchronism with the writerequest. The first mechanism makes it possible to reduce or remove aprocess in which information having already been stored in the diskcache is again loaded into the disk cash from disk units.

[0022] The second mechanism loads, that information which are necessaryfor generation of the updated value of the parity record and need not tobe prepared with synchronism with the write request received from theprocessor, from a disk unit into the disk cache in asynchronism with thewrite request. The second mechanism makes it possible to generate theupdated value of the parity record with no intervention of theprocessor.

[0023] Further, the control unit may be provided with a mechanism whichasynchronously performs a process for generation of the updated value ofthe parity record. Thereby, it is possible to perform the process forgeneration of the updated value of the parity record with nointervention of the processor.

[0024] Also, the control unit may be provided with a mechanism whichasynchronously performs a process for write of the updated value of theparity record from the disk cache into a disk unit. Thereby, it ispossible to perform the process for write of the updated value of theparity record from disk cache into the disk unit with no intervention ofthe processor.

[0025] As mentioned above, the control unit of the embodiment performs aprocess for generation of an updated value of a parity record attendantupon a write request from a processor with no intervention of aprocessor. Therefore, the speed of a write process for a disk arrayusing the data distribution by record can be increased. Also, thecontrol unit of the embodiment loads only information necessary foracquisition of the updated value of the parity record into a disk cache.Therefore, the process for generation of the updated value of the parityrecord can be performed with high efficiency.

BRIEF DESCRIPTION OF THE DRAWINGS

[0026]FIG. 1 is a block diagram showing the outline of the presentinvention;

[0027]FIG. 2 is a block diagram showing the outline of the operation ofa control unit in a first embodiment of the present invention in thecase where when the control unit receives a write request from aprocessor, data necessary for generation of an updated value of a parityrecord is not stored in a cache;

[0028]FIG. 3 is a block diagram showing the outline of the operation ofthe control unit in the first embodiment of the present invention in thecase where while generating the updated value of the parity record, thecontrol unit writes the updated value into a disk unit;

[0029]FIG. 4 is a block diagram showing the outline of the operation ofa control unit in a second embodiment of the present invention in thecase where when the control unit receives a write request from aprocessor, data necessary for generation of an updated value of a parityrecord is stored in a cache;

[0030]FIG. 5 is a block diagram showing the outline of the operation ofthe control unit in the second embodiment of the present invention inthe case where the control unit receives the write request from theprocessor, data necessary for generation of the updated value of theparity record is not stored in the cache;

[0031]FIG. 6 is a block diagram showing the outline of the operation ofthe control unit in the second embodiment of the present invention inthe case where while generating the updated value of the parity record,the control unit writes the updated value into a disk unit;

[0032]FIG. 7 is a block diagram showing the outline of the operation ofa control unit in a third embodiment of the present invention in thecase where when the control unit receives a write request from aprocessor, data necessary for generation of an updated value of a parityrecord is stored in a cache;

[0033]FIG. 8 is a block diagram showing the outline of the operation ofthe control unit in the third embodiment of the present invention in thecase where the control unit receives the write request from theprocessor, the data necessary for generation of the updated value of theparity record is not stored in the cache;

[0034]FIG. 9 is a block diagram showing the outline of the operation ofthe control unit in the third embodiment of the present invention in thecase where while generating the updated value of the parity record, thecontrol unit writes the updated value into a disk unit;

[0035]FIG. 10 is a block diagram showing the outline of the operation ofa control unit in a fourth embodiment of the present invention in thecase where when the control unit receives a write request from aprocessor, data necessary for generation of an updated value of a parityrecord is stored in a cache;

[0036]FIG. 11 is a block diagram showing the outline of the operation ofthe control unit in the fourth embodiment of the present invention inthe case where the control unit receives the write request from theprocessor, the data necessary for generation of the updated value of theparity record is not stored in the cache;

[0037]FIG. 12 is a block diagram showing the outline of the operation ofthe control unit in the fourth embodiment of the present invention inthe case where while generating the updated value of the parity record,the control unit writes the updated value into a disk unit;

[0038]FIG. 13 is a block diagram showing a first example of theconstruction of a computer system which embodies the present invention;

[0039]FIG. 14 is a block diagram showing a second example of theconstruction of a computer system which embodies the present invention;

[0040]FIG. 15 is a diagram for explaining the kinds of records which canbe stored in a disk unit;

[0041]FIG. 16 is a diagram for explaining records which constructs aparity group;

[0042]FIG. 17 is a block diagram showing a third example of theconstruction of a computer system which embodies the present invention;

[0043]FIG. 18 is a diagram for explaining the construction of a cache;

[0044]FIG. 19 is a diagram for explaining the construction of a segment;

[0045]FIG. 20 is a diagram for explaining the construction of adirectory;

[0046]FIG. 21 is a diagram for explaining the construction of a tracktable;

[0047]FIG. 22 is a diagram for explaining the construction of paritygroup (PG) management information;

[0048]FIG. 23 is a diagram for explaining the structure of an emptysegment queue;

[0049]FIG. 24 is a diagram for explaining the construction of an emptyPG management information queue;

[0050]FIG. 25 is a diagram for explaining the construction of anonvolatile memory;

[0051]FIG. 26 shows a flow chart of a process performed by a hit/missjudge part a;

[0052]FIG. 27 shows a flow chart of a process performed by the hit/missjudge part a when the release from a wait condition is made;

[0053]FIG. 28 shows a flow chart of a process performed by a synchronousdata load part a;

[0054]FIG. 29 shows a flow chart of a process performed by thesynchronous data load part a when a disk unit positioning process iscompleted;

[0055]FIG. 30 shows a flow chart of a process performed by a synchronousdata write part a;

[0056]FIG. 31 shows a flow chart of a process performed by thesynchronous data write part a when a disk unit positioning process iscompleted;

[0057]FIG. 32 shows a flow chart of a process performed by a synchronousdata write part b;

[0058]FIG. 33 shows a flow chart of a process performed by thesynchronous data write part b when a disk unit positioning process iscompleted;

[0059]FIG. 34 shows a flow chart of a process performed by anasynchronous record load part a;

[0060]FIG. 35 shows a flow chart of a process performed by theasynchronous record load part a when a disk unit positioning process iscompleted;

[0061]FIG. 36 shows a flow chart of a process performed by anasynchronous record write part a;

[0062]FIG. 37 shows a flow chart of a process performed by theasynchronous record write part a when a disk unit positioning process iscompleted;

[0063]FIG. 38 shows a flow chart of a process performed by a hit/missjudge part b;

[0064]FIG. 39 shows a flow chart of a process performed by a synchronousdata write part c;

[0065]FIG. 40 shows a flow chart of a process performed by anasynchronous record load part b;

[0066]FIG. 41 shows a flow chart of a process performed by anasynchronous record write part b;

[0067]FIG. 42 shows a flow chart of a process performed by theasynchronous record write part b when a disk unit positioning process iscompleted;

[0068]FIG. 43 shows a flow chart of a process performed by a hit/missjudge part c;

[0069]FIG. 44 shows a flow chart of a process performed by a synchronousdata write part d;

[0070]FIG. 45 shows a flow chart of a process performed by a synchronousdata write part e;

[0071]FIG. 46 shows a flow chart of a process performed by'a hit/missjudge part d;

[0072]FIG. 47 shows a flow chart of a process performed by a synchronousdata write part f;

[0073]FIG. 48 shows a flow chart of a process performed by a hit/missjudge part e;

[0074]FIG. 49 shows a flow chart of a process performed by a synchronousdata write part q;

[0075]FIG. 50 shows a flow chart of a process performed by a synchronousdata write part h;

[0076]FIG. 51 shows a flow chart of a process performed by anasynchronous record load part c;

[0077]FIG. 52 shows a flow chart of a process performed by a hit/missjudge part f;

[0078]FIG. 53 shows a flow chart of a process performed by a synchronousdata write part i;

[0079]FIG. 54 shows a flow chart of a process performed by anasynchronous record load part d;

[0080]FIG. 55 shows a flow chart of a process performed by anasynchronous record write part c;

[0081]FIG. 56 shows a flow chart of a process performed by a hit/missjudge part q;

[0082]FIG. 57 shows a flow chart of a process performed by a synchronousdata write part j;

[0083]FIG. 58 shows a flow chart of a process performed by a synchronousdata write part k;

[0084]15FIG. 59 shows a flow chart of a process performed by a hit/missjudge part h;

[0085]FIG. 60 shows a flow chart of a process performed by a synchronousdata write part m;

[0086]FIG. 61 shows a flow chart of a process concerning the operationof a control unit in a fifth embodiment of the present invention;

[0087]FIG. 62 is a block diagram showing the outline of the operation ofthe control unit in the first embodiment of the present invention in thecase where when the control unit receives the write request from theprocessor, the data necessary for generation of the updated value of theparity record is stored in the cache;

[0088]FIG. 63 is a block diagram showing the state of a cache when awrite request for a data record is accepted before a load process neededin connection with the preceding write request is completed for a parityrecord in a parity group to which that data record belongs;

[0089]FIG. 64 shows a block diagram showing the state of a cache after awrite request for a data record has been accepted before a load processneeded in connection with the preceding write request is completed for aparity record in a parity group to which that data record belongs;

[0090]FIG. 65 is a block diagram showing the outline of a parity grouphit/miss judge process a;

[0091]FIG. 66 is a block diagram showing the outline of a parity grouphit/miss judge process b;

[0092]FIG. 67 is a block diagram showing the outline of a parity grouphit/miss judge process c;

[0093]FIG. 68 is a block diagram showing the outline of an asynchronousprocess a;

[0094]FIG. 69 is a block diagram showing the outline of an asynchronousprocess b;

[0095]FIG. 70 is a block diagram showing the outline of an asynchronousprocess c;

[0096]FIG. 71 is a block diagram showing the outline of an asynchronousprocess d;

[0097]FIG. 72 is a block diagram showing the outline of a paritygeneration timing a;

[0098]FIG. 73 is a block diagram showing the outline of a paritygeneration timing b;

[0099]FIG. 74 is a block diagram showing the outline of a paritygeneration timing c;

[0100]FIG. 75 is a block diagram showing the outline of the operation ofthe control unit in the first embodiment of the present invention in thecase where the generation of the updated value of the parity record ismade in asynchronism with a data transfer process of the control unit;

[0101]FIG. 76 is a block diagram showing the outline of the operation ofthe control unit in the second embodiment of the present invention inthe case where the generation of the updated value of the parity recordis made in asynchronism with a data transfer process of the controlunit;

[0102]FIG. 77 is a block diagram showing the outline of the operation ofthe control unit in the third embodiment of the present invention in thecase where the generation of the updated value of the parity record ismade in asynchronism with a data transfer process of the control unit;

[0103]FIG. 78 is a block diagram showing the outline of the operation ofthe control unit in the fourth embodiment of the present invention inthe case where the generation of the updated value of the parity recordis made in asynchronism with a data transfer process of the controlunit;

[0104]FIG. 79 shows a flow chart of a process performed by a hit/missjudge part i;

[0105]FIG. 80 shows a flow chart of a process performed by a hit/missjudge part k;

[0106]FIG. 81 shows a flow chart of a process performed by a hit/missjudge part l;

[0107]FIG. 82 shows a flow chart of a process performed by a hit/missjudge part m;

[0108]FIG. 83 shows a flow chart of a process performed by anasynchronous record load part f;

[0109]FIG. 84 shows a flow chart of a process performed by a paritygeneration part a;

[0110]FIG. 85 shows a flow chart of a process performed by a paritygeneration part b;

[0111]FIG. 86 is a block diagram showing the outline of a paritygeneration timing d; and

[0112]FIG. 87 is a table showing a relationship between mechanisms whichsolve problems included in the present invention and the first to fifthembodiments which are of the present invention.

DESCRIPTION OF THE PREFERRED EMBODIMENTS

[0113] Embodiments of the present invention will now be explained. Inthe present invention, a write action using a disk cache is performedfor a disk array which uses the data distribution by record. In thefollowing, therefore, explanation will be made of only the write action.

[0114] 1 Common Contents

[0115] First of all, explanation will be made of contents which arecommon to the embodiments.

[0116] 1) Computer System

[0117]FIG. 13 shows a first example of the construction of a computersystem which embodies the present invention. The computer system iscomposed of a processor 1300, a control unit 1305 and more than one diskunits 1304. The processor 1300 includes a CPU 1301, a main storage 1302and channels 1303. The control unit 1305 includes a cache memory 1308and a director 1309. That data among data stored in the disk units 1304which has a higher access rate, is loaded into the cache memory(hereinafter simply abbreviated to cache) 1308. Management informationof the cache 1308 is stored in the directory 1309. The control unit 1305makes the transfer of data between the processor 1300 and the disk units1304 or between the cache 1308 and the disk units 1304 in accordancewith a read/write request from the processor 1300. The control unitfurther performs a read/write action between the disk units 1304 and thecache 1308 in asynchronism with the read/write request from theprocessor 1300. However, it should be noted that the present inventioncan be applied to a construction, as shown in FIG. 17, in which acontrol unit 1305 includes two or more directors 1307 and each director1307 accepts a read/write request from a processor 1300 to perform aread/write action.

[0118]FIG. 14 shows a second example of the construction of a computersystem which embodies the present invention. The construction of FIG. 14is different from the construction of FIG. 13 in that a control unit1305 further includes a nonvolatile memory 1400 and nonvolatile memorymanagement information 1401. The nonvolatile memory 1400 is constructedwith a nonvolatile medium. Like a cache 1308, the nonvolatile memory1400 is loaded with that data among data stored in disk units 1304 whichhas a higher access rate. The nonvolatile memory management information1401 too is constructed with a nonvolatile medium and managementinformation of the nonvolatile memory 1400 is stored into thenonvolatile memory management information 1401.

[0119] In the computer systems shown in FIGS. 13 and 14, the controlunit 1305 can select either one of two actions based on first and secondmethods, which will be mentioned hereinbelow, as an action for a writerequest accepted from the processor 1300.

[0120] The first method is a write through action or process 1301 shownin FIG. 13. In the write through action 1310, the control unit 1305writes, write data 1312 received from the processor 1300, directly intoa disk unit 1304 and further writes the same write data 1312 into thecache 1308. The write through action 1310 is not shown in FIG. 14.However, in the construction shown in FIG. 14 too, the control unit 1305can perform the write through action 1310.

[0121] The second method is a fast write action or process 1311 shown inFIGS. 13 and 14. In the fast write action 1311, the control unit 1305completes a write process at a stage of time when write data 1312received from the processor 1300 is written into the cache 1308. In thiscase, it is possible to complete the write request without making accessto a disk unit 1304. Therefore, a high-speed process can be realized.The write data 1312 written in the cache 1308 is written into a diskunit 1304 in asynchronism with the write request from the processor 1300during a time when the control unit 1305 is idle. Such a write processis termed a write after process 1313.

[0122] In the computer system shown in FIG. 14, the control unit 1305can further perform a reliable fast write action or process 1402. Thereliable fast write action 1402 is different from the fast write action1311 in that the write data 1312 is also written into the nonvolatilememory 1400. Thereby, the write data 1312 is ensured even if the cache1308 breaks down before the control unit 1305 performs the write afterprocess 1313.

[0123] 2) Store Format of Data

[0124] Next, the store format of data in a disk array using the datadistribution by record, to which the present invention is directed, willbe explained by use of FIGS. 15 and 16.

[0125] As shown in FIG. 15, the unit of data read from or written in adisk unit 1304 is called a record 11502. Two kinds of records 1502, thatis, a data record 1500 and a parity record 1501 can be stored in diskunits 1304 of the present invention. The data record 1500 is a record inwhich data read or written by the processor 1300 is stored. On the otherhand, the parity record 1501 is a record 1502 which is used for aprocess for recovery from an error which may occur in any disk unit1304.

[0126]FIG. 16 shows the construction of a parity group 1600 in the diskarray using the data distribution by record. Data records 1500 arestored in m corresponding disk units 1304 inclusive of disk units a 1601to d 1604, respectively. From the m data records 1500 are generated nparity records 1501 which are in turn stored into n corresponding diskunits e 1605 to f 1606, respectively. In FIG. 16, the parity group 1600is constructed by the m data records 1500 and the n parity records 1501.Generally, as for a parity group 1600 including n parity records 1501,the contents of all records 1502 in the parity group 1600 can berecovered even if n disk units 1304 among (m+n) disk units having therecords in the parity group 1600 stored therein break down. The presentinvention is also applicable to the case where the assembly of diskunits 1304 stored records forming a parity group 1600 or the number(m+n) of records 1502 forming a parity group 1600 as shown in FIG. 16 isdifferent in each parity group 1600.

[0127] Embodiments as mentioned later on will be explained by virtue ofthe parity group 1600 shown in FIG. 16.

[0128]FIG. 18 shows the construction of the cache 1308. The cache 1308includes a plurality of segments 1800. One record 1502 on a disk unit1304 is stored in each segment 1800.

[0129]FIG. 19 shows the construction of each segment 1800. The segment1800 is composed of a pointer 1900 and a data area 1901. The pointer1900 is used when empty segments 1800 are to be linked with each other.The data or parity record 1502 is stored in the data area 1901.

[0130]FIG. 20 shows the construction of the directory 1309. A recordtable 2000 is information indicative of whether or not records 1502 arestored in the cache 1308. PG (parity group) management information 2001is information for managing records 1502 in a parity group 1600 storedin the cache 1308. An empty segment queue management pointer 2002 and anempty PG management information pointer 2003 are pointers for managingsegments 1800 and PG management information 2001 which are in emptyconditions, respectively. As disk unit occupy information 2004 isstored, for each disk unit 1304, information indicating that each diskunit 1304 is operating. As disk unit wait information 2005 is stored,for each disk unit 1304, information indicating that a read/writerequest from the processor 1300 is in a wait condition.

[0131]FIG. 21 shows the construction of the record table 200. The recordtable 200 has entries which correspond to records 1502 included in thedisk units 1304, respectively. The entries are arranged in the order ofthe disk unit numbers of the disk units 1304 and in the order of therecord numbers of records 1502 in the same disk unit 1304. In the casewhere none of records 1502 in the parity groups 1600 which the record1502 belongs to are stored in the cache 1308, the content of the entryof the record 1502 takes a null value. On the other hand, in the casewhere any one of the records 1502 in the parity groups 1600 which therecord 1502 belongs to is stored in the cache 1308, the entry of therecord 1502 indicates the PG management information 2001.

[0132]FIG. 22 shows the construction of the PG management information2001. An empty pointer 2206 is used for linking empty managementinformation 2202 with each other. An update before segment pointer 2200indicates a segment 1800 in which the update before content of a record1502 corresponding to the entry is stored. An update after segmentpointer 2201 indicates a segment in which the update after value of arecord 1502 corresponding to the entry is stored. In the case where boththe update before segment pointer 2200 and the update after segmentpointer 2201 take null values, it is meant that the corresponding record1502 is not stored in the cache 1308. A write after bit 2202 isinformation indicating that a write after process 1313 for a record 1502corresponding to the entry should be performed. A load request bit 2203is information indicating that a record 1502 corresponding to the entryshould be loaded into the cache 1308. Since the update before segmentpointer 2200, the update after segment pointer 2201, the write after bit2202 and the load request bit 2203 are provided corresponding to eachrecord 1502, the PG management information 2001 includes each of thosedata which is (m+n) in number equal to the number of records 1502included in the corresponding parity group 1600. Lock information 2204indicates that the records 1502 in the parity group 1600 correspondingto the PG management information 2001 under consideration are beingoperated. In a write action for the disk array using the datadistribution by record, not only a data record 1501 but also all parityrecords 1501 are updated. Therefore, it is required that a write actionfor the same parity group 1600 is sequentially performed (or serialized)in accordance with the lock information 2204. Lock wait information 2205is information indicating that a read/write request from the processor1300 is in a wait condition. The lock wait information 2205 is providedfor ensuring that the write action will be performed sequentially. Aparity generation bit 2206 is information indicating that records 1502necessary for generation of updated values of parity records 1501belonging to the parity group 1600 corresponding to the PG managementinformation 2001 under consideration are stored in the cache 1308.

[0133]FIG. 23 shows the construction of an empty segment queue 2300. Aleading one 1800 of segments 1800 the data areas 1901 of which are inempty conditions, is pointed by the empty segment queue managementpointer 2002. A subsequent segment 1800 is pointed by a pointer 1900included in the preceding segment 1800.

[0134]FIG. 24 shows the construction of an empty PG managementinformation queue 2400. Leading one 2001 of PG management information2001 which are in empty conditions, is pointed by the empty PGmanagement information pointer 2003. Subsequent PG managementinformation 2001 is pointed by an empty pointer 2206 included in thepreceding PG management information 2001.

[0135]FIG. 25 shows the construction of the nonvolatile memory 1400. Thenonvolatile memory 1400 includes a plurality of nonvolatile segments2500. The construction of each nonvolatile segment 2500 is similar tothat of the segment 1800 shown in FIG. 19. Also, the construction of thenonvolatile memory management information 1401 is similar to that of thedirectory 1309 shown in FIG. 20.

[0136] 3) Outline and Problems

[0137] The outline of the present invention will be explained by use ofFIG. 1.

[0138] When a control unit 1305 receives a write request from aprocessor 1300, a hit/miss judge part i 1700 refers to a directory 1309(in conjunction with a data line 1705) to check whether or notinformation necessary for generation of an updated value of a parityrecord 1501 (see FIG. 15) exists in a cache 1308.

[0139] At this time, in the case where the information necessary forgeneration of the updated value of the parity record 1501 is to beprepared in synchronism with the write request, the control unit 1305first loads the necessary information into the cache 1308 by use of asynchronous record load part b 1702 (in conjunction with a data line1707).

[0140] Next, the control unit 1305 receives write data 1312 for a datarecord 1500 from the processor 1300 by use of a synchronous data writepart m 1701. At this time, either a write through process 1310 (FIG.13), a fast write process 1311 (FIG. 13 or 14) or a reliable fast writeprocess 1402 (FIG. 14) can be applied for the write request. If theinformation necessary for generation of the updated value of the parityrecord 1501 (FIG. 15) is complete in the cache 1308, it is possible togenerate the updated value of the parity record 1501 (in conjunctionwith a data line 1706).

[0141] The updated value of the parity record 1501 may also be generatedusing a parity generation part c 1710 (in conjunction with a data line1711) after the write request from the processor 1300 has beencompleted.

[0142] In the case where the information necessary for generation of theupdated value of the parity record 1501 may be prepared in asynchronismwith the write request from the processor 1300, the control unit 1305loads the necessary information into the cache 1308 by use of anasynchronous record load part e 1703. With this load process, the parityrecord 1501 can be generated (in conjunction with a data line 1708) at astage of time when the information necessary for generation of theparity record 1501 becomes complete in the cache 1308. In this case too,the updated value of the parity record 1501 may be generated using theparity generation part c 1710 (in conjunction with the data line 1711)after a process for loading the information necessary for generation ofthe updated value of the parity record 1501 has been completed.

[0143] Using an asynchronous record write part d 1704, the control unit1305 performs a write after process 1313 (FIG. 13 or 14) for the updatedvalue of the parity record 1501 or the data record 1500 written in thecache 1308 through the fast write process 1311 (FIG. 13 or 14) or thereliable fast write process 1402 (FIG. 14). In this case too, inparallel with generation of the updated value of the parity record 1501from the information necessary for generation of the updated value ofthe parity record 1501, the control unit 1305 can write the updatedvalue into a disk unit 1304 (in conjunction with a data line 1709).

[0144] Though the above is the outline of the present invention, thedetailed operation of the control unit 1305 differs depending onspecific strategies for the following problems.

[0145] Problem 1—This concerns a method of selecting informationnecessary for generation of an updated value of a parity record 1501(FIG. 15), that is, which information should be used to generate theupdated value of the parity record.

[0146] Problem 2—This concerns the asynchronization of a processassociated with the generation of the updated value of the parity record1501. By performing the process associated with the generation of theupdated value of the parity record 1501 in asynchronism with theprocessor, the process associated with the generation of the updatedvalue of the parity record is caused not to be included in a responsetime seen from the processor.

[0147] Problem 3—This concerns the timing of generation of the updatedvalue of the parity record 1501, that is, which timing the updated valueof the parity record 1501 should be generated at.

[0148] 4) Parity Group Hit/Miss Judge Process First, in the presentinvention, three methods as mentioned hereinbelow by (a) to (c) areprovided as means for solution of the problem 1, that is, the method ofselection of the information necessary for generation of the updatedvalue of the parity record 1501.

[0149] (a) In a parity group hit/miss judge process a 6500, to generatean updated value of a parity record 1501 is acquired from an updatebefore value of a data record 1500 designated as the object of write andan update before value of the parity record 1501 are necessary. For thatpurpose, the hit/miss condition 6502 (or the presence/absence in a cache1308) of the data record 1500 (1502) designated as the object of writefrom the processor 1300 and the hit/miss condition 6501 of the parityrecord 1501 (1502) are judged while referring to a directory 1309 (inconjunction with a data line 6503). As a result, a record 1502 amongthose records 1502 which is missing, is loaded into the cache 1308 (inconjunction with a data line 6504).

[0150] (b) In a parity group hit/miss judge process b 6600 shown in FIG.66, to generate an updated value of a parity record 1501, other datarecords 1500 included in a parity group 1600 (FIG. 16) to which a datarecord 1500 designated as the object of write belongs are necessary. Forthat purpose, the hit/miss conditions 6601 of the other data records1500 (1502) included in the parity group 1600 to which the data record1500 designated as the write object from the processor 1300 belongs, arejudged while referring to a directory 1309 (in conjunction with a dataline 6602). As a result, a record 1502 among those records 1502 which ismissing, is loaded into a cache 1308 (in conjunction with a data line6603).

[0151] (c) In a parity group hit/miss judge process c 6700 shown in FIG.67, the hit/miss condition 6502 of an update before value of a datarecord 1500 designated as the object of write, the hit/miss condition ofan updated before value of a parity record 1501 and the hit/missconditions 6601 of other data records 1500 included in a parity group1600 to which the data record 1500 designated as the object of writefrom the processor 1300 belongs, are judged (in conjunction with a dataline 6701). As a result, one of the parity group hit/miss judge processa 6500 and the parity group hit/miss judge process b 6600 shown in FIGS.65 and 66 which is advantageous from an aspect of performance, isselected and performed. For example, in the case where all other datarecords 1500 included in the parity group 1600 to which the data record1500 designated as the object of write belongs exist in a cache 1308 andthe parity record 1501 does not exist in the cache 1308, the selectionof the parity group hit/miss judge process b 6600 rather than the paritygroup hit/miss judge process a 6500 is advantageous in an aspect ofefficiency.

[0152] 5) Asynchronous Process

[0153] Next, in the present invention, four kinds of asynchronousprocesses as mentioned hereinbelow by (a) to (d) are provided as meansfor solution of the problem 2, that is, means for asynchronization.

[0154] (a) In an asynchronous process a 6800 shown in FIG. 68, an updateafter parity record 108 (or an update after value of a parity record) isgenerated by use of an update before data record 105 (or an updatebefore value of a data record) and an update before parity record 107(or an update before value 6803 of the parity record). Accordingly, thisprocess is used in combination with the parity group hit/miss judgeprocess a 6500. Further, the asynchronous process a 6800 is used (inconjunction with a data line 6804) in the case where a process forupdating an update after data record 106 (or an updated value of a datarecord 1500 designated as the object of write) on a disk unit 1304 is tobe performed in synchronism with a write request from a processor 1300.If the update before data record 105 does not 'exist in a cache 1308, aprocess for loading the update before data record 105 into the cache1308 must be performed (in conjunction with the data line 6804) insynchronism with the write request from the processor 1300. Therefore,two processes as mentioned hereinbelow are asynchronously performed (inconjunction with data lines 6805):

[0155] {circle over (1)} a load process in the case where the updatebefore parity record 107 does not exist in the cache 1308; and

[0156] {circle over (2)} a process for write of the update after parityrecord 108 into a disk unit 1304.

[0157] (b) In an asynchronous process b 6900 shown in FIG. 69, an updateafter parity record 108 is generated by use of an update before datarecord 105 and an update before parity record 107. Accordingly, thisprocess too is used in combination with the parity group hit/miss judgeprocess a 6500. Further, the asynchronous process b 6900 too is used (inconjunction with a data line 6904) in the case where a process forupdating an update after data record 106 on a disk unit 1304 is to beperformed in synchronism with a write request 6904 from a processor1300. Therefore, four processes as mentioned hereinbelow areasynchronously performed (in conjunction with data lines 6905):

[0158] {circle over (1)} a load process in the case where the updatebefore data record 105 does not exist in a cache 1308;

[0159] {circle over (2)} a process for write of the update after datarecord 106 into a disk unit 1304;

[0160] {circle over (3)} a load process in the case where the updatebefore parity record 107 does not exist in the cache 1308; and

[0161] {circle over (4)} a process for write of the update after parityrecord 108 into a disk unit 1304.

[0162] (c) In an asynchronous process c 7000 shown in FIG. 70, an updateafter parit record 108 is generated by use of in-group other datarecords 702 (other data records 1500 included in a parity group 1600 towhich a data record 1500 designated as the object of write belongs).Accordingly, this process is used in combination with the parity grouphit/miss judge process b 6600. Further, the asynchronous process c 7000is used (in conjunction with a data line 7004) in the case where aprocess for updating an update after data record 106 on a disk unit 1304is to be performed in synchronism with a write request from a processor1300. The in-group other data records 702 may be acquired even after theupdate after data record 106 has been written into the disk unit 1304.Therefore, two processes as mentioned hereinbelow are asynchronouslyperformed (in conjunction with data lines 7005):

[0163] {circle over (1)} a load process in the case where the in-groupother data record 702 which does not exist in a cache 1308; and

[0164] {circle over (2)} a process for write of the update after parityrecord 108 into a disk unit 1304.

[0165] (d) An asynchronous process d 7100 shown in FIG. 71 is used inthe case where an update after parity record 108 is generated by use ofin-group other data records 702. Accordingly, this process is used incombination with the parity group hit/miss judge process b 6600.Further, the asynchronous process d 7100 is used (in conjunction with adata line 7104) in the case where a process for updating an update afterdata record 106 on a disk unit 1304 is to be performed in synchronismwith a write request from a processor 1300. Therefore, three processesas mentioned hereinbelow are asynchronously performed (in conjunctionwith data lines 7105);

[0166] {circle over (1)} a load process in the case where the in-groupother data record 702 which does not exist in the cache 1308;

[0167] {circle over (2)} a process for write of the update after datarecord 106 into the disk unit 1304; and

[0168] {circle over (3)} a process for write of the update after parityrecord 108 into a disk unit 1304.

[0169] 6) Timing of Generation of Update After Parity RECORD 108

[0170] Next, as means for solution of the problem 3 in the presentinvention, that is, the timing of generation of the update after parityrecord 108, explanation will be made of four kinds of timings a to d asmentioned hereinbelow.

[0171] (a) A parity generation timing a shown in FIG. 72 is a timingwhen an update after data record 106 designated from a processor 1300 istransferred from the processor 1300 to a control unit 1305 (inconjunction with a data line 7202 a). In this case, it is required thatinformation 7201 necessary for generation of an update after parityrecord 108 is completely stored in a cache 1308. A parity generationunit 7200 generates the update after parity record 108 (in conjunctionwith data lines 7202 b and 7202 c), as shown in FIG. 72.

[0172] (b) A parity generation timing b shown in FIG. 73 is a timingwhen the last information among information 7201 necessary forgeneration of an update after parity record 108 is loaded into a cache1308 (in conjunction with a data line 7300 a). In this case, it isrequired that an update after data record 106 designated from theprocessor 1300 has already been stored in the cache 1308 (in conjunctionwith a data line 7300 b).

[0173] (c) A parity generation timing c shown in FIG. 74 is a timingwhen in parallel with the generation of an updated value of a parityrecord by a parity generation unit 7200 on the basis of an update afterdata record 106 and information 7201 necessary for generation of anupdate after parity record 108 (in conjunction with data lines 7400 aand7400 b), the generated updated value is written into a disk unit 1304and a cache 1308 (in conjunction with data lines 7400 c and 7400 d).

[0174] (d) A parity generation timing d shown in FIG. 86 is a timingwhen the parity generation is made by a parity generation unit 7200 (inconjunction with data lines 8600) in asynchronism with a process fordata transfer executed by a control unit 1305.

[0175] 7) Relationship Between Embodiments

[0176] Five embodiments will be explained in connection with the presentinvention. Though the control unit 1305 used in the followingexplanation and shown in FIGS. 13, 14 and 17 is not shown expressivelyso as to include a unit for generating a parity record 1501, it isassumed that the control unit 1305 includes the unit for generating anupdated value of the parity record 1501. FIG. 87 shows a relationshipbetween the embodiments of the present invention and the mechanisms ormeans for solution of the problems in the present invention which arementioned in conjunction with from FIG. 65 to FIG. 74.

[0177] 2. First Embodiment

[0178] 1) Outline

[0179] As shown in FIG. 87, a first embodiment is an embodiment in whichthe parity group hit/miss judge process a 6500 and the asynchronousprocess a 6800 are combined. All of the parity generation timings a to dare relevant to the first embodiment.

[0180] The outline of the first embodiment will now be explained by useof FIGS. 62 and 2.

[0181]FIG. 62 shows the operation of a control unit 1305 in the firstembodiment in the case where all update before parit records 107 in aparity group 1600 to which a data record 1500 made the object of writebelongs exist in a cache 1308. Namely, FIG. 62 shows the operation ofthe control unit 1305 in the first embodiment in the case where theparity generation timing a shown in FIG. 72 is used.

[0182] In this case, the timing of generation of an update after parityrecord 108 is the timing of write of an update after data record 106into a disk unit 1304, that is, the parity generation timing a.Concretely, the control unit 1305 controls the above timing by use of asynchronous data write part a 101 (in conjunction with a data line 109a). The update after parity record 108 itself is generated by a paritygeneration unit a 104 (in conjunction with a data line 109 b). For thegeneration of the update after parity record 108, an update before datarecord 105 is needed (in conjunction with a data line 109 c). Therefore,in the case where this record 105 is not stored in the cache 1308, thecontrol unit 1305 loads the record 105 into the cache 1308 by use of asynchronous data load part a 102 (in conjunction with a data line 110)before the update after data record 106 is written into a disk unit1304.

[0183] The update after parity record 108 is written into a disk unit1304 by use of an asynchronous record write part a 103 (in conjunctionwith a data line 111) in asynchronism with a read/write request from aprocessor 1300. In the present embodiment, the asynchronous record writepart a 103 writes a parity record 1501 into the disk unit 1304. In theother embodiments, however, there may be the case where the asynchronousrecord write part writes a data record.

[0184]FIG. 2 shows the operation of the control unit 1305 in the firstembodiment in the case where at least one of update before parityrecords 107 in a parity group 1600 to which a data record 1500 made theobject of write belongs does not exist in a cache 1308. Namely, FIG. 2shows the operation of the control unit 1305 in the first embodiment inthe case where the parity generation timing b shown in FIG. 73 is used.

[0185] The control unit 1305 loads, the update before parity record 107which does not exist in the cache 1308, into the cache 1308 (inconjunction with a data line 203 a) by use of an asynchronous recordload part a 201 in asynchronism with a read/write request from aprocessor 1300. In this case, the timing of generation of an updateafter parity record 108 is a timing when the last information in theupdate before parity record 107 which does not exist in the cache 1308is loaded into the cache 1308 (in conjunction with the data line 203 a),that is, the parity generation timing b.

[0186] In the present embodiment, the asynchronous record load part a201 loads a parity record 1501 into the cache 1308. In the otherembodiments, however, there may be the case where the asynchronousrecord load part loads a data record 1500.

[0187] As shown in FIG. 2, an update after data record 106 is writteninto a disk unit 1304 by a synchronous data write part b 200 of thecontrol unit 1305 (in conjunction with a data line 202). At this timing,however, the update after parity record 108 is not generated.

[0188] Since the operations of a synchronous data load part a 102 and anasynchronous record write part a 103 are similar to those in FIG. 62,explanation thereof will be omitted.

[0189] 2) Details of Processes

[0190] Next, explanation will be made of the details of the individualprocess parts shown in FIGS. 62 and 2.

[0191] a) Hit/Miss Judge Part a 100

[0192]FIGS. 26 and 27 show the flow charts of processes performed by thehit/miss judge part a 100. The hit/miss judge part a 100 has threeexecution start points. A first start point is a start point (a) shownin FIG. 26 or a start point at which the execution is started when awrite request from the processor 1300 is received. A second start pointis a start point (b) shown in FIG. 26 or a start point at which theexecution is started when a process by the synchronous data load part a102 is completed. A third start point is a start point (c) shown in FIG.27 or a start point at which the execution is started when the releasefrom a wait condition is made.

[0193] The process flow shown in FIG. 26 will now be explained.

[0194] Referring to disk unit occupy information 2004, the control unit1305 judges whether or not a disk unit 1304 which becomes the object ofwrite is empty (step 2600). If the disk unit is not empty, the flowjumps to step 2613.

[0195] If the disk unit is empty, the control unit 1305 sets thecorresponding disk unit occupy information 2004 and searches for PGmanagement information 2001 of an update before data record 105 made theobject of write (step 2601). In the case where there is no correspondingPG management information 2001, an empty PG management information queue2400 is searched to allocate new PG management information 2001.

[0196] In step 2602, reference to lock information 2204 is made to checkwhether or not the start of a write process is possible. If the start ispossible, the lock information is set in step 2603. If the start is notpossible, the flow jumps to step 2611. In step 2604, the control unit1305 is disconnected from the processor 1300 once.

[0197] In step 2605, the control unit 1305 checks whether or not anupdate before data record 105 exists in the cache. In the case where therecord 105 does not exist, the synchronous data load part a 102 iscalled in step 2606, thereby completing the process once. In the casewhere the record 105 exists, the check is made as to whether or notthere is any one among update before parity records 107 in a paritygroup 1600 which does not exist in the cache 1308 (step 2607). If allthe update before parity records 107 exist in the cache, the flow jumpsto step 2610. If there is any update before parity record 107 which doesnot exist in the cache, a load request bit 2203 corresponding to thatrecord 107 is turned on (step 2608). Next, in step 2609, the controlunit 1305 activates the synchronous data write part b 200, therebycompleting the process.

[0198] In step 2610, the control unit 1305 activates the synchronousdata write part a 101, thereby completing the process.

[0199] In step 2611, the control unit 1305 sets the corresponding lockwait information 2205 and resets the corresponding disk unit occupyinformation 2004. Next, in step 2612, the control unit 1305 is releasedfrom the state of connection with the processor 1300 once, therebybringing the accepted write request into a wait condition.

[0200] In step 2613, the control unit 1305 sets the corresponding diskunit wait information 2005. And, the flow goes to step 2612.

[0201] If the report of completion is received from the synchronous dataload part a 102, the process is executed from the start point (b) shownin FIG. 26. Since the processings in and after step 2607 have alreadybeen described, explanation thereof will be omitted.

[0202] The flow chart shown in FIG. 27 illustrates the flow of a processperformed when the control unit 1305 is released from a wait condition.In step 2700, the control unit 1305 makes connection with the processor1300. In step 2701, the control unit 1305 requires the processor 1300 toissue the write request again.

[0203] b) Synchronous Data Load Part a 102

[0204] FIGs. 28 and 29 show the flow charts of processes performed bythe synchronous data load part a 102.

[0205] The flow chart shown in FIG. 28 illustrates the flow of a processperformed by the synchronous data load part a 102 when it is called bythe hit/miss judge part a 100. In step 2800, the control unit 1305searches an empty segment queue 2300 and so on to ensure an emptysegment 1800 and sets a value indicative of the segment 1800 into anupdate before segment pointer 2200. In step 2801, the control unit 1305issues a positioning request to disk units 1304, thereby completing theprocess.

[0206] The flow chart shown in FIG. 29 illustrates the flow of a processperformed when a positioning process for disk units 1304 is completed.In step 2900, a data record 1500 on the disk unit 1304 is loaded as anupdate before data record 105 into the segment 1800 indicated by theupdate before segment pointer 2200. In step 2901, the control unit 1305turns the control to the start point b for the hit/miss judge part a 100shown in FIG. 26.

[0207] c) Synchronous Data Write Part a 101

[0208]FIGS. 30 and 31 show the flow charts of processes performed by thesynchronous data write part a 101.

[0209] The flow chart shown in FIG. 30 illustrates the flow of a processperformed when the synchronous data write part a 101 is called by thehit/miss judge part a 100. In step 3000, in the case where a segment1800 for storing an update after data record 106 is not ensured, thecontrol unit 1305 searches an empty segment queue 2300 and so on toensure the segment 1800 and sets a corresponding value into an updateafter segment pointer 2201. In step 3001, in the case where segments1800 for storing all update after parity records 108 are not ensured,the control unit 1305 searches the empty segment queue 2300 and so on toensure the segments 1800 and set corresponding values into update aftersegment pointers 2201 for parity records 1501. In step 3002, the controlunit 1305 issues a positioning request to disk units 1304, therebycompleting the process.

[0210] The flow chart shown in FIG. 31 illustrates the flow of a processperformed when a positioning process for disk units 1304 is completed.In step 3100, the control unit 1305 makes connection with the processor1300 again. In step 3101, the control unit 1305 writes data receivedfrom the processor 1300 into a disk unit 1304 and simultaneouslytherewith performs the following actions;

[0211] {circle over (1)} storing data received from the processor 1300as an update after data record 106 into the segment 1800 indicated bythe corresponding update after segment pointer 2201; and

[0212] {circle over (2)} generating all update after parity records 108from an update before data record 105, the data received from theprocessor 1300 and all update before parity records 107 and storing thegenerated records into the segments 1800 indicated by the correspondingupdate after segment pointers 2201.

[0213] In step 3102, the control unit 1305 turns the update after datarecord 106 corresponding to a data record 1501 made the object of writeand all the update after parity records 108 to an update before datarecord 105 and update before parity records 107, respectively.Concretely, the segments 1800 having been indicated by the correspondingupdate before segment pointers 2200 are released and the segments 1800having been indicated by the corresponding update after segment pointers2201 are turned to ones indicated by the update before segment pointers2200. And, null values are set into the corresponding update aftersegment pointers 2201.

[0214] In step 3103, the control unit 1305 sets values into write afterbits 2202 corresponding to all parity records 1501.

[0215] Thereafter, in step 3104, lock information 2204 and disk unitoccupy information 2004 are reset. In step 1305, the control unit 305reports the completion to the processor 1300.

[0216] d) Synchronous Data Write Part b 200

[0217]FIGS. 32 and 33 show the flow charts of processes performed by thesynchronous data write part b 200.

[0218] The flow chart shown in FIG. 32 illustrates the flow of a processperformed by the synchronous data write part b 200 when it is called bythe hit/miss judge part a 100. In step 3200, in the case where a segment1800 for storing an update after data record 106 is not ensured, thecontrol unit 1305 searches an empty segment queue 2300 and so on toensure the segment 1800 and sets a corresponding value into an updateafter segment pointer 2201. In step 3201, the control unit 1305 issues apositioning request to a disk unit 1304, thereby completing the process.

[0219] The flow chart shown in FIG. 33 illustrates the flow of a processperformed when a positioning process for the disk unit 1304 iscompleted. In step 3300, the control unit 1305 makes connection with theprocessor 1300 again. In step 3301, the control unit 1305 writes datareceived from the processor 1300 into the disk unit 1304 andsimultaneously therewith stores the data received from the processor1300 into the segment 1800 as the update after data record 106.

[0220] When a write request for a certain data record 1500 from theprocessor 1300 is accepted, there may be the case where an update afterdata record 106 and an update before data record 105 are both stored inthe cache 1308.

[0221]FIG. 63 shows the case where when the preceding write request 6300was accepted, there is a parity record a 6301 (having the data contentC) among update before parity records 107 which has not been loaded inthe cache 1308. In this case, write data accepted upon the precedingwrite request 6300 is stored as an update after data record a 6303 inthe cache 1308. An update before data record a 6302 corresponds to writedata accepted upon the further preceding write request. In this case,since an updated value of a parity record 1501 reflecting the updateafter data record a 6303 (having the data content B) has not beengenerated, it is apparent that the data content C of the parity record a6301 on a disk unit 1304 is generated from the data content A of theupdate before data record a 6302.

[0222]FIG. 64 shows the case where when a load process for the updatebefore parity record 107 is intended under the above circumstance, awrite request for the same data record 1500, that is, the present writerequest 6400 is accepted before the load process is started. In thiscase, in order to generate an updated value of a parity record 1501reflecting data accepted through the present write request 6400, thereis needed the value of the update before data record a 6302 (having thedata content A) which is used when the value of the parity record a 6301(having the data content C) was generated. Accordingly, as shown in FIG.64, the update before data record a 6302 is held in the cache 1308 as itis and the write data accepted through the present write request 6400 isstored as an update after data record b 6401 (having the data content D)into the cache 1308.

[0223] From the foregoing, in step 3301 shown in FIG. 33, the updatebefore data record 105 is held in the cache 1308 as it is and the writedata (corresponding to the update after data record b 6401) accepted inthe segment 1800 indicated by the update after segment pointer 2201 isstored into the segment 1800 (corresponding to the update before datarecord a 6302) in which the update after data record 106 has beenstored. In step 3302, a load request bit 2203 corresponding to theupdate before parity record 107 which has not been loaded in the cache1308, is turned on. In step 3303, lock information 2204 and disk unitoccupy information 2004 are reset. Thereafter, in step 3304, the controlunit 1305 reports the completion of the process to the processor 1300.

[0224] e) Asynchronous Record Load Part a 201

[0225]FIGS. 34 and 35 show the flow charts of processes performed by theasynchronous record load part a 201.

[0226] The flow chart shown in FIG. 34 illustrates the flow of a processperformed using a time when the control unit 1305 is idle. In step 3400,the control unit 1305 refers to disk unit occupy information 2004 tosearch for disk units 1304 which are empty. In step 1301, the controlunit 1305 searches the searched-out empty disk units 1304 for a record1502 for which a load request bit 2203 is ON, searches for PG managementinformation 2001 in which lock information 2204 is OFF, and turns on thelock information 2204.

[0227] Next, in step 3402, the control unit 1305 performs a load processfor the searched-out record 1502. Namely, the control unit 1305 ensuresa segment 1800 and sets a value into an update before segment pointer2200 corresponding to a parity record 1501 to be loaded. In step 3403,the control unit 1305 issues a positioning request to the disk unit1304.

[0228] The flow chart shown in FIG. 35 illustrates performed when apositioning process for a disk unit 1304 is completed. In step 3500, thecontrol unit 1305 checks whether or not load request bits 2203 in the PGmanagement information 2001 become all OFF by the load process for therecord 1502. If the bits 2203 are all OFF, the flow goes to step 3500.On the other hand, if any one of the bits 2203 is ON, the control unit1305 loads the record 1502 as an update before parity record 107 into asegment 1800 indicated by the corresponding update before segmentpointer 2200 (step 3501) and the flow thereafter goes to step 3507. Inthe case where the load request bits 2203 in the PG managementinformation 2001 becomes all OFF by this load process, update afterparity records 108 for all parity records 1501 are generated at thistiming. In step 3502, the control unit 1305 ensures segments 1800 forstoring the update after parity records 108 and sets pointers intorespective update after segment pointers 2201 corresponding to theparity records 1501.

[0229] In step 3503, the control unit 1305 searches data records 1500 ina parity group 1600 under consideration for all data records 1500 theupdated values of which are not reflected to the parity records 1501.Concretely, the search is made for a data record for which the contentsof an update before data record 105 and an update after data record 106are held in pair in the cache, that is, neither of an update beforesegment pointer 2200 and an update after segment pointer 2201 do nottake both null values, and the search is further made for all updatebefore parity records 107. Accordingly, whether the load process is aload process for data records 1500 or a load process for parity records1501, records 1502 loaded by the load process are used to generateparity records 1501.

[0230] In step 3504, the control 3505 performs the following operationwhile loading the records 1501 into segments indicated by thecorresponding update before segment pointers 2200. Namely, by use of theparity generation unit a 104, update after parity records 108 for allparity records 1501 are generated from the update before data records105, update after data records 106 and all update before parity records107 which are searched out in step 3503. The generated update afterparity records 108 are stored into segments 1800 indicated by thecorresponding update after segment pointers 2201.

[0231] In step 3505, the control unit 1305 turns the update after datarecord 106 corresponding to a data record 1501 made the object of writeand all the update after parity records 108 to an update before datarecord 105 and update before parity records 107, respectively. Aconcrete processing is similar to that in step 3102 mentioned above.

[0232] In step 3506, the control unit 1305 sets values into write afterbits 2202 corresponding to all the parity records 1501.

[0233] In step 3507, load request bits 2203 corresponding to the parityrecords 1501, lock information 2204 and disk unit occupy information2004 are reset.

[0234] Finally, in step 3508, the control unit 1305 resets disk unitwait information 2005 and lock wait information 2204 to release aread/write request from the processor which is in a wait condition,thereby completing the process.

[0235] f) Asynchronous Record Write Part a 103

[0236]FIGS. 36 and 37 show the flow charts of processes performed by theasynchronous record write part a 103.

[0237] The flow chart shown in FIG. 36 illustrates the flow of a processperformed using a time when the control unit 1305 is idle. In step 3600,the control unit 1305 refers. to disk unit occupy information 2004 tosearch for a disk unit 1304 which are empty.

[0238] In step 3601, the control unit 1305 searches the searched-outempty disk unit 1304 for a record 1502 for which a write after bit 2202is ON and a load request bit 2202 is OFF, searches for PG managementinformation 2001 in which lock information 2204 is OFF, and turns on thelock information 2204.

[0239] In step 3602, the control unit 1305 starts a write after processfor the searched-out record 1502 and issues a positioning request to adisk unit 1304.

[0240] The flow chart shown in FIG. 37 illustrates the flow of a processperformed when a positioning process for a disk unit 1304 is completed.In step 3700, the control unit 1305 refers to an update before segmentpointer 2200 and an update after segment pointer 2201 which correspondsto the record 1502. In the case where the update after segment pointer2201 takes a null value, data in a segment 1800 indicated by the updatebefore segment pointer 2200 is written into the disk unit 1304. In thecase where, neither of the update before segment pointer 2200 and theupdate after segment pointer 2201 take null values, the lately accepteddata in a segment 1800 indicated by the update after segment pointer2201 is written into the disk unit 1304.

[0241] In step 3701, the control unit 1305 resets the correspondingwrite after bit 2202, lock information 2204 and disk unit occupyinformation 2004.

[0242] Finally, in step 3702, the control unit 1305 resets disk waitinformation 2005 and lock wait information 2205 to release a read/writerequest from the processor which is in a wait condition, therebycompleting the process.

[0243] 3) Other Method 1 for Realization of First

[0244] Embodiment 1

[0245]FIG. 3 is a block diagram for explaining another method 1 whichrealizes the first embodiment. This method is different from the methodshown in FIG. 1 or 2 in that the timing of generation of an update afterparity record 108 is a timing when the update after parity record 108itself is written into a disk unit 1304. Namely, FIG. 3 shows theoperation of the control unit 1305 in the first embodiment in the casewhere the parity generation timing c shown in FIG. 74 is used as aparity generation timing.

[0246] An asynchronous record write part b 302 shown in FIG. 3 generatesan update after parity record 108 from an update before data record 105,an update after data record 106 and an update before parity record 107by use of a parity generation unit a 104 and in parallel therewithwrites the generated update after parity record 108 into a disk unit1304. Accordingly, a synchronous data write part c 301 and anasynchronous record load part b 303 have not a function of generatingthe update after parity record 108.

[0247] The detailed operation will be explained in the following.

[0248] a) Hit/Miss Judge Part b 300

[0249]FIG. 38 shows the flow chart of a process performed by a hit/missjudge part b 300 shown in FIG. 3. The hit/miss judge part b 300 hasthree execution start points.

[0250] A first point is a start point a shown in FIG. 38 or a startpoint at which the execution is started when a write request from aprocessor 1300 is received. A second start point is a start point bshown in FIG. 38 or a start point at which the execution is started whena process by a synchronous data load part a 102 is completed. A thirdstart point is a start point when the release from a wait condition ismade. Since the flow of a process performed in conjunction with thethird start point is similar to that shown in FIG. 27 performed by thehit/miss judge part a 100, explanation thereof will be omitted. Theprocess flow of the hit/miss judge part b 300 shown in FIG. 38 isapproximately the same as that of the hit/miss judge part a 100 shown inFIG. 26. Therefore, processings in FIG. 38 corresponding to those shownin FIG. 26 are designated by the same step numbers used in FIG. 26 andonly the difference from FIG. 26 will be explained there. Namely, thehit/miss judge part b 300 activates or calls the synchronous data writepart c 301 in step 3800 after an update before data record 105 has beenstored into a cache 1308.

[0251] b) Synchronous Data Write Part c 301

[0252]FIG. 39 shows the flow chart of a process performed by thesynchronous data write part c 301 when a positioning process for a diskunit 1304 is completed. Since the flow of a processing performed by thesynchronous data write part c 301 when it is called by the hit/missjudge part b 300 is the same as that shown in FIG. 32, explanationthereof will be omitted. The process flow of the synchronous data writepart c 301 shown in FIG. 39 is approximately the same as that of thesynchronous data write part c shown in FIG. 33. Therefore, processingsin FIG. 39 corresponding to those shown in FIG. 33 are designated by thesame step numbers used in FIG. 33 and the difference from FIG. 33 willbe explained here. Namely, in step 3900, the control unit 1305 checkswhether or not all update before parity records 107 are stored in thecache 1308. If there is any record 107 which is not stored, the flowjumps to step 3303. If all the update before parity records 107 arestored, the control unit 1305 turns on write after bits corresponding tothose records 107.

[0253] c) Asynchronous Record Load Part b 303

[0254]FIG. 40 shows the flow chart of a process performed by theasynchronous record load part b 303 when a positioning process for adisk unit 1304 is completed. Since the flow of a process performed usinga time when the control unit 1305 is idle is the same as that shown inFIG. 34, explanation thereof will be omitted. The process flow of theasynchronous record load part b 303 shown in FIG. 40 corresponds to onein which the processing for generating the update after parity records108 is removed from the process flow of the asynchronous record loadpart a 201 shown in FIG. 35. Therefore, explanation is omitted here, inFIG. 40, processings corresponding to those shown in FIG. 35 aredesignated by the same step numbers as those used in FIG. 35.

[0255] d) Asynchronous Record Write Part b 302

[0256]FIGS. 41 and 42 show the flow charts of processes performed by theasynchronous record write part b 302.

[0257] The flow chart shown in FIG. 41 illustrates the flow of a processperformed using a time when the control unit 1305 is idle. Since theprocess flow shown in FIG. 41 is approximately the same as that shown inFIG. 36, processings in FIG. 41 corresponding to those shown in FIG. 36are designated by the same step numbers used in FIG. 36 and thedifference from FIG. 36 will be explained here. Namely, in step 4100,the judgement is made as to whether a record 1502 made the object ofwrite is a data record 1500 or a parity record 1501. In the case wherethe record 1502 made the object of write is a parity record 1501, thecontrol unit 1305 ensures a segment 1800 for storing an update afterparity record 108 and sets a pointer value into the correspondingsegment pointer 2201 (step 4101).

[0258] The flow chart shown in FIG. 42 illustrates the flow of a processperformed when a positioning process for a disk unit 1304 is completed.Since the process flow shown in FIG. 42 is similar to that shown in FIG.37, processings in FIG. 42 corresponding to those shown in FIG. 37 aredesignated by the same step numbers as those used in FIG. 37 and thedifference from FIG. 37 will be explained here. Namely, in step 4200,the control unit 1305 judges whether a record 1502 made the object ofwrite is a data record 1500 or a parity record 1501. In the case wherethe record 1502 is a data record 1500, the flow goes to step 3700. Inthe case where the record 1502 is a parity record 1501, the control unit1305 performs the following processing. First, in step 4201, the controlunit 1305 generates an update after parity record 108 from an updatebefore data record 105, an update after data record 106 and an updatebefore parity record 108 by use of the parity generation unit a 104 andin parallel therewith stores the generated update after parity record108 into a disk unit 1304 and a segment 1800 which is indicated by anupdate after segment pointer 2201 corresponding to this record 108. Instep 4202, the control unit 1305 checks whether or not write after bits2202 are all OFF. If there is any bit 2202 which is not OFF, the flowjumps to step 3701. If the bits 2202 are all OFF, the control unit 1305turns all update after data records 106 in the parity group 1600 whichbelong to the parity record 1500 made the object of write and all theupdate after parity records 108 to update before data records 105 andupdate before parity records 107, respectively (step 4203). Since theconcrete content of this processing has already been mentioned inconjunction with step 3102, explanation thereof will be omitted here.

[0259] 4) Other Method 2 for Realization of First Embodiment 1

[0260]FIG. 75 is a block diagram for explaining still another method 2which realizes the first embodiment. The method shown in FIG. 75 ischaracterized in that the generation of an update after parity record108 is made in asynchronism with a data transfer process of the controlunit 1305. Namely, FIG. 75 shows the operation of the control unit 1305in the first embodiment in the case where the parity generation timing dshown in FIG. 86 is used as a parity generation timing.

[0261] The control unit 1305 shown in FIG. 75 generates the update afterparity record 108 from an update before data record 105, an update afterdata record 106 and an update before parity record 107 by use of aparity generation part a 7501 (in conjunction with data lines 7504).Since process parts other than a hit/miss judge part i 7500, anasynchronous record load part f 7502 and the parity generation part a7501 have already been described, explanation thereof will be omitted.

[0262] a) Hit/Miss Judge Part j 7500

[0263]FIG. 79 shows the flow chart of a process performed by thehit/miss judge part j 7500 shown in FIG. 75. The hit/miss judge part j7500 has three execution start points. A first start point is a startpoint a shown in FIG. 79 or a start point at which the execution isstarted when a write request from the processor 1300 is received. Asecond start point is a start point b shown in FIG. 79 or a start pointat which the execution is started when a process by the synchronous dataload part a 102 is completed. A third start point is a start point whenthe release from a wait condition is made. The flow of a processperformed in conjunction with the third start point is similar to thatof the hit/miss judge part a 100 shown in FIG. 27. Since the processflow of the hit/miss judge part j 7500 shown in FIG. 79 is approximatelythe same as that of the hit/miss judge part a 100 shown in FIG. 26,processings in FIG. 79 corresponding to those shown in FIG. 26 aredesignated by the same step numbers as those used in FIG. 26 and thedifference from FIG. 26 will be explained here. Namely, in the casewhere the result of check in step 2607 as to whether or not there is anyone among update before parity records 107 which does not exist in acache 1308 indicates that all records 107 exist in the cache 1308, thecontrol unit 1305 turns on a parity generation bit 2206 in step 7900 andthereafter transfers the process to step 2609.

[0264] b) Asynchronous Record Load Part f 7502

[0265]FIG. 83 shows the flow chart of a process performed by theasynchronous record load part f 7502 shown in FIG. 75. This process isperformed when a positioning process for a disk unit 1304 is completed.The flow of a process performed using a time when the control unit 1305is idle, is the same as that shown in FIG. 34. Since the process flow ofthe asynchronous record load part f 7502 shown in FIG. 83 isapproximately the same as that of the asynchronous record load part a103 shown in FIG. 35, processing in FIG. 83 similar to those shown inFIG. 35 are designated by the same step numbers as those used in FIG. 35and the difference from FIG. 35 will be explained here. Namely, in thecase where load request bits become all OFF (in step 3500), the controlunit 105 turns on a parity generation bit 2206 in step 7900.

[0266] c) Parity Generation Part a 7501

[0267]FIG. 84 shows the flow chart of a process performed by the paritygeneration part a 7501 shown in FIG. 75.

[0268] In step 8400, the control unit 1305 refers to disk unit occupyinformation 2004 to search for disk units 104 which are empty. In step8401, the control unit 105 searches the searched-out empty disk units104 for PG management information 2001 in which a parity generation bit2206 is ON and lock information 2204 is OFF, and turns on the lockinformation 2204.

[0269] In step 8402, the control unit 1305 generates an update afterparity record 108 from an update before data record 105, an update afterdata record 106 and an update before parity record 107. In step 8403,the control unit 1305 turns, the update after data record 106corresponding to a data record 1500 made the object of write and all theupdate after parity records 108, to an update before data record 105 andupdate before parity records 107, respectively. A concrete processingfor that purpose is the same as that in step 3102 explained inconjunction with FIG. 31.

[0270] In step 8404, the control unit 1305 sets values into write afterbits 2202 corresponding to all the parity records 1501 and resets aparity generation bit 2206, lock information 2204 and disk unit occupyinformation 2004. Finally, in step 8405, the control unit 1305 refers tolock wait information 2205 and disk unit wait information 2005 torelease a read/write request from the processor 1300 which is in a waitcondition.

[0271] 3. Second Embodiment

[0272] 1) Outline

[0273] As shown in FIG. 87, a second embodiment is an embodiment inwhich the parity group hit/miss judge process a 6500 and theasynchronous process b 6900 are combined. The parity generation timingsa to d are relevant to the second embodiment.

[0274]FIG. 4 shows the operation of a control unit 1305 in the secondembodiment in the case where an update before data record 105corresponding to a data record 1500 made the object of write and allupdate before parity records 107 in the corresponding parity group 1600exist in a cache 1308. Namely, FIG. 4 shows the operation of the controlunit 1305 in the second embodiment in the case where the paritygeneration timing a shown in FIG. 72 is used as a parity generationtiming.

[0275] In this case, when writing an update after data record 106 intothe cache 1308 (and the nonvolatile memory 1400), the control unit 1305generates an update after parity record 108 by use of a synchronous datawrite part d 401. In the case where a reliable fast write process 1402is applied, the synchronous data write part d 401 has a function ofwriting data received from a processor 1300 into the nonvolatile memory1400 (in conjunction with a data line 402) though this function is notshown in FIG. 4.

[0276] The update after data record 106 and the update after parityrecord 108 are written into disk units 1304 by use of an asynchronousrecord write part a 103 (in conjunction with a data line 111) inasynchronism with a read/write request from the processor 1300.

[0277]FIG. 5 shows the operation of the control unit 1305 in the secondembodiment in the case where there is any one among an update beforedata record 105 of a data record 1500 made the object of write and allupdate before parity records 107 in the corresponding parity group 1600which does not exist in a cache 1308. Namely, FIG. 5 shows the operationof the control unit in the second embodiment in the case where theparity generation timing b shown in FIG. 73 is used as a paritygeneration timing. In this case, the control unit 1305 load, an updatebefore data record 105 or an update before parity record 107 which doesnot exist in the cache 1308, into the cache 1308 by use of a synchronousrecord load part a 201 in asynchronism with a read/write request from aprocessor 1300. At a timing when the last data in the assembly or set ofan update before data record 105 and update before parity records 107which do not exist in the cache 1308 is transferred into the cache 1308,update after parity records 108 for all parity records 1501 aregenerated (in conjunction with a data line 203).

[0278] As shown in FIG. 5, an update after data record 106 is writteninto the cache 1308 by a synchronous data write part e 500 (inconjunction with a data line 501). However, at this timing, the updateafter parity record 108 is not generated. The operation of anasynchronous record write part a 103 is similar to the operation of thatshown in FIG. 4.

[0279] 2) Details of Processes

[0280] a) Hit/Miss Judge Part c 400

[0281]FIG. 43 shows the flow chart of a process performed by a hit/missjudge part c 400. The flow chart shown in FIG. 43 illustrates the flowof a process performed when a write request is received from theprocessor 1300. The flow of a process performed by the hit/miss judgepart c 400 when the release from a wait condition is made, is the sameas the process flow shown in FIG. 27. The process flow of the hit/missjudge part c 400 shown in FIG. 43 is approximately the same as that ofthe hit/miss judge part a 100 shown in FIG. 26. Therefore, processingsin FIG. 43 corresponding to those shown in FIG. 26 are designated by thesame step numbers used in FIG. 26 and the difference from FIG. 26 willnow be explained here.

[0282] In step 4302, the control unit 1305 checks whether or not thereis any one among an update before data record 105 and all update beforeparity records 107 in the corresponding parity group 1600 which does notexist in the cache 1308. In the case where all the above records existin the cache, the control unit 1305 calls the synchronous data writepart d 401 in step 4300, thereby completing the process. In the casewhere there is any record which does not exist in the cache. the controlunit 1305 calls the synchronous data write part e 500 in step 4301,thereby completing the process.

[0283] b) Synchronous Data Write Part d 401

[0284]FIG. 44 shows the flow chart of a process performed by thesynchronous data write part d 401. The flow chart shown in FIG. 44illustrates the flow of a process performed by the synchronous datawrite part d 401 when it is called by the hit/miss judge part c 400. Theprocess flow of the synchronous data write part d 401 shown in FIG. 44corresponds to that of the synchronous data write part a 101 shown inFIGS. 30 and 31. Therefore, processings in FIG. 44 corresponding tothose shown in FIGS. 30 and 31 are designated by the same step numbersas those used in FIGS. 30 and 31 and the difference from FIGS. 30 and 31will now be explained.

[0285] In step 4400, the control unit 1305 ensures a segment 1800 forstoring an update after data record 106. In step 4401, the control unit1305 ensures segments 1800 for storing all update after parity records108. (In the case where the records are to be also stored into thenonvolatile memory 1400, nonvolatile segments 2500 are ensured in steps4400 and 4401.)

[0286] In step 4402, the control unit 1305 performs the followingprocessings.

[0287] {circle over (1)} Data received form the processor 1300 is storedas an update after data record 106 into a segment 1800 indicated by anupdate after segment pointer 2201. {circle over (2)} All update afterparity records 108 are generated from an update before data record 105,the data received from the processor 1300 and all update before parityrecords 107, and the generated records 108 are stored into segmentsindicated by the corresponding update after segment pointers 2201.

[0288] (In the case where the data are to be also stored into thenonvolatile memory 1400, the data are stored into nonvolatile segments2500 in the above processings {circle over (1)} and {circle over (2)}.)

[0289] Further, in step 4403, the control unit 1305 sets values intowrite after bits 2202 corresponding to a data record 1500 for which awrite request was accepted and all parity records 1501.

[0290] c) Synchronous Data Write Part e 500

[0291]FIG. 45 shows the flow chart of a process performed by thesynchronous data write part e 500. The flow chart shown in FIG. 45illustrates the flow of a process performed by the synchronous datawrite part e 500 is called by the hit/miss judge part c 400. The processflow of the synchronous data write part e 500 shown in FIG. 45corresponds to that of the synchronous data write part b 200 shown inFIGS. 32 and 33. Therefore, processings in FIG. 45 corresponding tothose shown in FIGS. 32 and 33 are designated by the same step numbersas those used in FIGS. 32 and 33 and the difference from FIGS. 32 and 33will now be explained.

[0292] In step 4500, the control unit 1305 ensures a segment 1800 forstoring an update after data record 106. In step 4501, the control unit1305 stores data received from the processor 1300 into the segment 1800indicated by an update after segment pointer 2201 and turns on thecorresponding write after bit 2202. At this time, data in a segmentindicated by an update before segment pointer 2200 is held. The reasonhas already been mentioned in conjunction with the first embodiment. (Inthe case where the data is to be also stored into the nonvolatile memory1400, a nonvolatile segment 2500 is ensured in step 4500 and the data isstored into the nonvolatile segment 2500 in step 4501.)

[0293] In step 4502, in the case where the cache does not includetherein an update before data record 105 of the data record 1500 forwhich the write request was accepted, and all the update before parityrecords 107, the control unit 1305 sets the corresponding load requestbit.

[0294] The processes performed by the other process parts or theasynchronous record load part a 201 and the asynchronous record writepart a 103 are the same as those shown and explained in conjunction withthe first embodiment.

[0295] 3) Other Method 1 for Realization of Second Embodiment

[0296]FIG. 6 is a block diagram for explaining another method 1 whichrealizes the first embodiment. This method is different from the methodshown in FIGS. 4 and 5 in that the timing of generation of an updateafter parity record 108 is a timing when the update after parity record108 itself is written into a disk unit 1304. Namely, FIG. 6 shows theoperation of the control unit 1305 in the second embodiment in the casewhere the parity generation timing c shown in FIG. 74 is used as aparity generation timing.

[0297] In FIG. 6 too, the control unit 1305 generates the update afterparity record 108 by use of an asynchronous record write part b 303 (inconjunction with a data line 306) in a manner similar to that in thefirst embodiment shown in FIG. 3.

[0298] a) Hit/Miss Judge Part d 600

[0299]FIG. 46 shows the flow chart of a process performed by a hit/missjudge part d 600. The flow chart shown in FIG. 46 illustrates the flowof a process performed when a write request from a processor 1300 isreceived. The flow of a process performed by the hit/miss judge part d600 when the release from a wait condition is made, is the same as thatshown in FIG. 27. Since the process flow of the hit/miss judge part d600 shown in FIG. 46 corresponds to that of the hit/miss judge part c400 shown in FIG. 43, processings in FIG. 46 corresponding to thoseshown in FIG. 43 are designated by the same step numbers as those usedin FIG. 43 and the difference from FIG. 43 will now be explained.

[0300] In step 4600, the control unit 4600 calls a synchronous datawrite part f 601 unconditionally in order to receive data for a datarecord 1500 made the object of write from the processor 1300. The otherprocessings are the same as those shown in FIG. 43.

[0301] b) Synchronous data write part f 601

[0302]FIG. 47 shows the flow chart of a process performed by thesynchronous data write part f 601. The flow chart shown in FIG. 47illustrates the flow of a process performed by the synchronous datawrite part f 601 when it is called by the hit/miss judge part d 600.Since the process flow of the synchronous data write part f 601 shown inFIG. 47 is approximately the same as that of the synchronous data writepart e 500 shown in FIG. 45, processings in FIG. 47 corresponding tothose shown in FIG. 45 are designated by the same step numbers as thoseused in FIG. 45 and the difference from FIG. 45 will now be explained.

[0303] In step 4700, the control unit 1305 checks whether nor dot allupdate before parity records 107 and an update before data record 105are stored in the cache 1308. If there is any record 107 which is notstored, the flow jumps to step 4502. If all the records 107 are stored,the control unit 1305 turns on write after bits corresponding to all theupdate after parity records 107 in step 4701 and thereafter the flowgoes to step 3303.

[0304] 4) Other Method 2 for Realization of Second Embodiment

[0305]FIG. 76 is a block diagram for explaining still another method 2which realizes the second embodiment. The method shown in FIG. 76 ischaracterized in that the generation of an update after parity record108 is made in asynchronism with a data transfer process of the controlunit 1305. Namely, FIG. 76 shows the operation of the control unit 1305in the second embodiment in the case where the parity generation timingd shown in FIG. 86 is used as a parity generation timing. As shown inFIG. 76, the control unit 1305 generates an update after parity record108 from an update before data record 105, an update after data record106 and an update before parity record 107 by use of a parity generationpart a 7501 (in conjunction with data lines 7504). Since process partsother than a hit/miss judge part k 7600 as mentioned hereinbelow havealready been described, explanation thereof will be omitted.

[0306] a) Hit/Miss Judge Part k 7600

[0307]FIG. 80 shows the flow chart of a process performed by a hit/missjudge part k 7600. The hit/miss judge part k 7600 has two executionstart points. A first start point is a start point shown in FIG. 80 or astart point at which the execution is started when a write request fromthe processor 1300 is received. A second start point is a start pointwhen the release from a wait condition is made. The flow of a processperformed in conjunction with the second start is similar to that of thehit/miss judge part a 100 shown in FIG. 27.

[0308] The process flow of the hit/miss judge part k 7600 shown in FIG.80 corresponds to that of the hit/miss judge part a 100 shown in FIG.26. Therefore, processings in FIG. 80 corresponding to those shown inFIG. 26 are designated by the same step numbers as those used in FIG. 26and the difference from FIG. 26 will now be explained.

[0309] In step 4302, the control unit 1305 checks whether or not thereis any one among an update before data record 105 and an update beforeparity record 107 which does not exist in the cache 1308. In the casewhere all the records exist, the control unit 1305 turns on a paritygeneration bit 2206 in step 7900 and thereafter the flow jumps to step4301.

[0310] 4. Third Embodiment

[0311] 1) Outline

[0312] As shown in FIG. 87, a third embodiment is an embodiment in whichthe parity group hit/miss judge process b 6600 and the asynchronousprocess c 7000 are combined. The parity generation timings a to d arerelevant to the third embodiment.

[0313]FIG. 7 shows the operation of a control unit 1305 in the thirdembodiment in the case where all in-group other data records 702 in aparity group 1600 to which a data record 1500 made the object of writebelongs exist in a cache 1308. Namely, FIG. 7 shows the operation of thecontrol unit 1305 in the third embodiment in the case where the paritygeneration timing a shown in FIG. 72 is used as a parity generationtiming. In this case, when an update after data record 106 is writteninto a disk unit 1304, the control unit 1305 generates an update afterparity record 108 by use of a synchronous data write part a 701 (inconjunction with data lines 704). An updated value of a parity record1501 is generated by a parity record generation unit b 703. The controlunit 1305 writes the update after parity record 108 into a disk unit1304 by use of an asynchronous record write part a 103 (in conjunctionwith a data line 111) in asynchronism with a read/write request from aprocessor 1300.

[0314]FIG. 8 shows the operation of the control unit 1305 in thirdembodiment in the case where there is any one, among all in-group otherdata records 702 in a parity group 1600 to which a data record 1500 madethe object of write belongs, which does not exist in the cache 1308.Namely, FIG. 8 shows the operation of the control unit 1305 in the thirdembodiment in the case where the parity generation timing b shown inFIG. 73 is used as a parity generation timing. In this case, the controlunit 1305 loads, the in-group other data record 702 which does not existin the cache 1308, into the cache 1308 by use of an asynchronous recordload part c 801 (in conjunction with a data line 803) in asynchronismwith a read/write request from the processor 1300. When the last one ofin-group other data records 702 which do not exist in the cache 1308 isloaded into the cache 1308, update after parity records 108 for allparity records 1501 are generated. As shown in FIG. 8, an update afterdata record 106 is written into a disk unit 1304 by use of a synchronousdata write part h 800 (in conjunction with a data line 802). However, atthis timing, the update after parity record 108 is not generated. Sincethe operation of an asynchronous record write part a 103 is similar tothe operation of that shown in FIG. 7, explanation thereof will beomitted.

[0315] 2) Details of Processes

[0316] a) Hit/Miss Judge Part e 700

[0317]FIG. 48 shows the flow chart of a process performed by a hit/missjudge part e 700. The flow chart shown in FIG. 48 illustrates the flowof a process performed when a write request from the processor 1300 isreceived. The flow of a process performed by the hit/miss judge part e700 when the release from a wait condition is made, is the same as theprocess flow shown in FIG. 27. The process flow of the hit/miss judgepart e 700 shown in FIG. 48 is approximately the same as that of thehit/miss judge part a 100 shown in FIG. 26. Therefore, processings inFIG. 48 corresponding to those shown in FIG. 26 are designated by thesame step numbers as those used in FIG. 26 and the difference from FIG.26 will now be explained.

[0318] In step 4800, the control unit 1305 checks whether or not thereis any one, among all in-group other data records 702 in a parity group1600 to which a data record 1500 made the object of write belongs, whichdoes not exist in the cache 1308. In the case where all the records 702exist in the cache, the control unit 1305 calls the synchronous datawrite part a 701 in step 4801, thereby completing the process. In thecase where there is any record 702 which does not exist in the cache,the control unit 1305 calls the synchronous data write part h 800 instep 4802, thereby completing the process.

[0319] b) Synchronous Data Write Part a 701

[0320]FIG. 49 shows the flow chart of a process performed by thesynchronous data write part q 701 when a positioning process for a diskunits 1304 is completed. The flow of a process performed by thesynchronous data write part q 701 when it is called by the hit/missjudge part e 700, is the same as the process flow shown in FIG. 30. Theprocess flow of the synchronous data write part q 701 shown in FIG. 49is approximately the same as that of the synchronous data write part a101 shown in FIG. 31. Therefore, processings in FIG. 49 corresponding tothose shown in FIG. 31 are designated by the same step numbers as thoseshown in FIG. 31 and the difference from FIG. 31 will not be explained.

[0321] In step 4900, the control unit 1305 writes data received from theprocessor 1300 into a disk unit 1304 and simultaneously therewithperforms the following actions:

[0322] {circle over (1)} storing the data received from the processor1300 as an update after data record 106 into a segment 1800 indicated byan update after segment pointer 2201; and

[0323] {circle over (2)} generating all update after parity records 108from the update after data record 106 received from the processor 1300and the other in-group data records 702 in the group and storing thegenerated records 108 into segments 1800 indicated by the correspondingupdate after segment pointers 2201.

[0324] In step 4901, the control unit 1305 changes the values of updatebefore segment pointers 2200 so as to indicate the secments 1800 havingbeen indicated by the update after segment pointers 2201 correspondingto the data record 1500 made the object of write and all the parityrecords 150l and sets null values into the corresponding update aftersegmenz pointers 2201. As a result, the update after data record 106 andthe update after parity records 108 are turned to an update before datarecord 105 and update before parity records 107, respectively.

[0325] c) Synchronous Data Write Part h 800

[0326]FIG. 50 shows the flow chart of a process performed by thesynchronous data write part h 800. The flow chart shown in FIG. 50illustrates the flow of a process performed when a positioning processfor disk units 1304 is completed. The flow of a process performed by thesynchronous data write part h 800 when it is called by the hit/missjudge part e 700, is the same as the process flow shown in FIG. 32. Theprocess flow of the synchronous data write part h 800 shown in FIG. 50is approximately the same as that of the synchronous data write part b200 shown in FIG. 33. Therefore, processings in FIG. 50 corresponding tothose shown in FIG. 33 are designated by the same step numbers as thoseused in FIG. 33 and the difference from FIG. 33 will now be explained.

[0327] In step 5000, the control unit 1305 turns on lock request bitscorresponding to in-group other data records 702 which are not in thecache 1308. (In the case where a load request bit corresponding to adata record 1500 made the object of write is ON, the bit is turned off.)

[0328] d) Asynchronous Record Load Part c 801

[0329]FIG. 51 shows the flow chart of a process performed by theasynchronous record load part c 801 when a positioning process for adisk unit 1304 is completed. The flow of a process performed using atime when the control unit 1305 is idle, is the same as the process flowshown in FIG. 34. The process flow of the asynchronous record load partc 801 shown in FIG. 51 is approximately the same as that of theasynchronous record load part a 201 shown in FIG. 35. Therefore,processings in FIG. 51 corresponding to those shown in FIG. 35 aredesignated by the same step numbers as those used in FIG. 35 and thedifference from FIG. 35 will now be explained.

[0330] In the case where load request bits 2203 in PG managementinformation 2001 become all OFF by the corresponding load process (instep 3500), the following processings are performed at this timing inorder to generate update after parity records 108 for all parity records1501.

[0331] In step 5100, the control unit 1305 searches for segments 1800corresponding to all data records 1500 to which the corresponding paritygroup 1600 belongs and which are ones other than a data record 1500 madethe object of a load process.

[0332] In step 5101, the control unit 1305 performs the followingoperation while loading the parity record 1501 into a segment 1800indicated by an update before segment pointer 2200. Namely, the controlunit 1305 generates update after parity records 108 for all parityrecords 1501 by use of the parity generation unit b 703 from the datarecords 1500 searched out in step 5100 and data records 1500 beingloaded. The generated parity records 108 are stored into segmentsindicated by the corresponding update after segment pointers 2201.

[0333] In step 5102, the control unit 1305 changes update before segmentpointers 2200 so as to indicate the segments 1800 having been indicatedby the update after segment pointers 2201 corresponding to the datarecord 1500 made the object of write and all the parity records 1501 andsets null values into the corresponding update after segment pointers2201. As a result, the update after data record 106 and the update afterparity records 108 are turned to an update before data record 106 andupdate before parity records 107.

[0334] The asynchronous record write part a 103 has already beenexplained.

[0335] 3) Other Method 1 for Realization of Third Embodiment FIG. 9 is ablock diagram for explaining another method 1 which realizes the thirdembodiment. The method shown in FIG. 9 is different from the methodshown in FIGS. 7 and 8 in that the timing of generation of an updateafter parity record 108 is a timing when the update after parity record108 itself is written into a disk unit 1304 (in conjunction with a dataline 906). Namely, FIG. 9 shows the operation of the control unit 1305in the third embodiment in the case where the parity generation timing cshown in FIG. 74 is used as a parity generation timing.

[0336] In FIG. 9 too, by use of an asynchronous record write part c 903,the control unit 1305 generates the update after parity record 108 andin parallel therewith writes the generated record 108 into the disk unit1304 in a manner similar to that in the first embodiment shown in FIG.3. Accordingly, a synchronous data write part i 901 and an asynchronousrecord load part d 902 have no function of generating the update afterparity record 108.

[0337] a) Hit/Miss Judge Part f 900

[0338]FIG. 52 shows the flow chart of a process performed by a hit/missjudge part f 900. The flow chart shown in FIG. 52 illustrates the flowof a process performed when a write request from the processor 1300 isreceived. The flow of a process performed by the hit/miss judge part f900 when the release from a wait condition is made, is the same as theprocess flow shown in FIG. 27. The process flow of the hit/miss judgepart f 900 shown in FIG. 52 is approximately the same as that of thehit/miss judge part b 300 shown in FIG. 38. Therefore, processings inFIG. 52 corresponding to those shown in FIG. 38 are designated by thesame step numbers used in FIG. 38 and the difference from FIG. 38 willnow be explained.

[0339] In step 5200, the control unit 1305 calls the synchronous datawrite part i 901 unconditionally in order to receive data for a datarecord 1500 made the object of write from the processor 1300.

[0340] b) Synchronous Data Write Part i 901

[0341]FIG. 53 shows the flow chart of a process performed by thesynchronous data write part i 901 when a positioning process for a diskunit 1304 is completed. The flow of a process performed by thesynchronous data write part i 901 when it is called by the hit/missjudge part f 900, is the same as the process part shown in FIG. 32. Theprocess flow of the synchronous data write part i 901 shown in FIG. 53is approximately the same as that of the synchronous data write part h800 shown in FIG. 50. Therefore, processings in FIG. 53 corresponding tothose shown in FIG. 50 are designated by the same step numbers as thoseused in FIG. 50 and the difference from FIG. 50 will now be explained.

[0342] In step 5300, the control unit 1305 checks whether or notin-group other data records 702 (or other data records 1500) are storedin the cache 1308. In the case where there is any record which is notstored in in-group other records in the cache, the flow jumps to step5000. In the case where all the records are stored in the cache, thecontrol unit 1305 turns on write after bits 2202 corresponding to allupdate before parity records 107 (step 5301) and thereafter the flowjumps to step 3303.

[0343] c) Asynchronous Record Load Part d 902

[0344]FIG. 54 shows the flow chart of a process performed by thesynchronous record load part d 902 when a positioning process for diskunits 1304 is completed. The flow of a process performed using a timewhen the control unit 1305 is idle, is the same as the process flowshown in FIG. 34. The process flow of the asynchronous record load partd 902 shown in FIG. 54 corresponds to one in which the processing forgenerating the update after parity record 108 is removed from theprocess flow of the asynchronous record load part c 801 shown in FIG.51.

[0345] d) Asynchronous Record Write Part c 903

[0346]FIG. 55 shows the flow chart of a process performed by theasynchronous record write part c 903. The flow of a process performedusing a time when the control unit 1305 is idle, is the same as theprocess flow shown in FIG. 41. The process flow of the asynchronousrecord write part c 903 shown in FIG. 55 is approximately the same asthat of the asynchronous record write part b 302 shown in FIG. 42.Therefore, processings in FIG. 55 corresponding to those shown in FIG.42 are designated by the same step numbers as those used in FIG. 42 andthe difference from FIG. 42 will now be explained.

[0347] In step 5500, the control unit 1305 performs the followingprocessing. Namely, the control unit 1305 generates by use of a paritygeneration unit b 703 an update after parity record 108 from all datarecords 1500 in the cache belonging to a parity group 1600 and inparallel therewith writes the record 108 into a disk unit 1304. (Aconcrete way for selection of data records 1500 in the cache 1308 is thesame as that mentioned in conjunction with step 5100.) Further, therecord 108 is stored into a segment 1800 indicated by an update aftersegment pointer 2201.

[0348] In the case where write after bits 2202 become all OFF, thecontrol unit 1305 changes update before segment pointers 2200 so as tothe segments 1800 having been indicated by the update after segmentpointers 2201 corresponding to a data record 1500 made the object ofwrite and all parity records 1501 and sets null values into thecorresponding update after segment pointers 2201 (step 5501).

[0349] 4) Other Method 2 for Realization of Third Embodiment

[0350]FIG. 77 is a block diagram for explaining still another method 2which realizes the third embodiment. The method shown in FIG. 77 ischaracterized in that the generation of an update after parity record108 is made in asynchronism with a data transfer process of the controlunit 1305. Namely, FIG. 77 shows the operation of the control unit 1305in the third embodiment in the case where the parity generation timing dshown in FIG. 86 is used as a parity generation timing.

[0351] As shown in FIG. 77, the control unit 1305 generates an updateafter parity record 108 from an update after data record 106 andin-group other data records 702 by use of a parity generation unit b 703and a parity generation part b 7701 (in conjunction with data lines7702).

[0352] a) Hit/Miss Judge Part e 7700

[0353]FIG. 81 shows the flow chart of a process performed by a hit/missjudge part e 7700. The hit/miss judge part e 7700 has two executionstart points. A first start point is a start point shown in FIG. 81 or astart point at which the execution is started when a write request fromthe processor 1300 is received. A second start point is a start pointwhen the release from a wait condition is made. The flow of a processperformed in conjunction with the second start point is the same as theprocess flow of the hit/miss judge part a 100 shown in FIG. 27. Theprocess flow of the hit/miss judge part l 7700 shown in FIG. 81 isapproximately the same as that of the hit/miss judge part a 100 shown inFIG. 26. Therefore, processings in FIG. 81 corresponding to those shownin FIG. 26 are designated by the same step numbers as those used in FIG.26 and the difference from FIG. 26 will now be explained.

[0354] In step 4800, the control unit 1305 checks whether or not thereis any one among in-group other data records 1500 in a parity group 1600which does not exist in the cache 1308. In the case where all therecords exist, the control unit 1305 turns on a parity generation bit2206 in step 7900 and thereafter the flow jumps to step 4802.

[0355] b) Parity Generation Part b 7701

[0356]FIG. 85 shows the flow chart of a process performed by the paritygeneration part b 7701. The process flow of the parity generation part b7701 shown in FIG. 85 is approximately the same as that of the paritygeneration part a 7501 shown in FIG. 84. Therefore, processings in FIG.85 corresponding to those shown in FIG. 84 are designated by the samestep numbers as those used in FIG. 84 and the difference from FIG. 84will be explained here. Namely, in step 8500, the control unit 1305generates an update after parity record 108 from an update after datarecord 106 and in-group other data records 702.

[0357] 5. Fourth Embodiment

[0358] 1) Outline

[0359] As shown in FIG. 87, a fourth embodiment is an embodiment inwhich the parity group hit/miss judge process b 6600 and theasynchronous process d 7100 are combined. The parity generation timingsa to d are relevant to the fourth embodiment.

[0360]FIG. 10 shows the operation of a control unit 1305 in the fourthembodiment in the case where all in-group other data records 702 in aparity group 1600 to which a data record 1500 made the object of writebelongs exist in a cache 1308. Namely, FIG. 10 shows the operation ofthe control unit 1305 in the fourth embodiment in the case where theparity generation timing a shown in FIG. 72 is used as a paritygeneration timing.

[0361] In this case, when an update after data record 106 is writteninto the cache 1308, the control unit 1305 generates an update afterparity record 108 by use of a synchronous data write part i 1001 (inconjunction with data lines 1002). At this time, a parity generationunit b 703 is used.

[0362] The control unit 1305 writes the update after data record 106 andthe update after parity record 108 into disk units 1304 by use of anasynchronous record write part a 103 (in conjunction with a data line111) in asynchronism with a read/write request from a processor 1300.

[0363]FIG. 11 shows the operation of the control unit 1305 in the fourthembodiment in the case where any one, among all in-group other datarecord 702 in a parity group 1600 to which a data record 1500 made ofone object of write belongs, which does not exist in the cache 1308.Namely, FIG. 11 shows the operation of the control unit 1305 in thefourth embodiment in the case where the parity generation timing b shownin FIG.73 is used as a parity generation timing.

[0364] In this case, the control unit 1305 loads, the in-group otherdata record 702 which does not exist in the cache 1308, into the cache1308 by used of an asynchronous record load part c 802 in asynchronismwith a read/write from the processor 1300. When the last one of in-groupother data records 702 which do not exist in the cache 1308 is loadedinto the cache 1308, the control unit 1305 generates update after parityrecords 108 for all parity records 1502 (in conjunction with a date line804).

[0365] As shown in FIG. 11, an update after data record 106 is writteninto the cache 1308 by a synchronous data write part k 1100 (inconjunction with a data line 1101). (There may be the case where therecord 106 is also written into a nonvolatile memory 1400.) However, atthis timing, the update after parity record 108 is not generated. Theoperation of an asynchronous record write part a 103 is the same as theoperation of that shown in FIG. 10.

[0366] 2) Details of Processes

[0367] a) Hit/Miss Judge Part q 1000

[0368]FIG. 56 shows the flow chart of a process performed by a hit/missjudge part g 1000. The flow chart shown in FIG. 56 illustrates the flowof a process performed when a write request from the processor 1300 isreceived. The flow of a process performed by the hit/miss judge part q1000 when the release from a wait condition is made, is the same as theprocess flow shown in FIG. 27. The process flow of the hit/miss judgepart q 1000 shown in FIG. 56 is approximately the same as that of thehit/miss judge part e 700 shown in FIG. 48. Therefore, processings inFIG. 56 corresponding to those in FIG. 48 are designated by the samestep numbers as those used in FIG. 48 and the difference from FIG. 48will now be explained.

[0369] In the case where all in-group other data records 702 in a paritygroup 1600 to which a data record 1500 made the object of write belongsexist in the cache 1308 (step 4800), the control unit 1305 calls thesynchronous data write part i 1001 in step 5600, thereby completing theprocess. In the case where there is any record 702 which does not existin the cache 1308, the control unit 1305 calls the synchronous datawrite part k 1100 in step 5601, thereby completing the process.

[0370] b) Synchronous Data Write Part i 1001

[0371]FIG. 57 shows the flow chart of a process performed by thesynchronous data write part i 1001. The flow chart shown in FIG. 57illustrates the flow of a process performed by the synchronous datawrite part i 1001 when it is called by the hit/miss judge part q 1000.The process flow of the synchronous data write part i 1001 shown in FIG.57 is approximately the same as that of the synchronous data write partd 401 shown in FIG. 44. Therefore, processings in FIG. 57 correspondingto those shown in FIG. 44 are designated by the same step numbers asthose used in FIG. 44 and the difference from FIG. 44 will now beexplained.

[0372] In step 5700, the control unit 1305 stores data received from theprocessor 1300 as an update after data record 106 into a segment 1800indicated by an update after segment pointer 2201. In the case where thedata is to be stored in a nonvolatile memory 1400, the data is alsotransferred to a nonvolatile segment 2500. Further, the control unit1305 generates all update after parity records 108 from the update afterdata record 106 received from the processor 1300 and in-group other datarecords 702 and stores the generated records 108 into segments 1800indicated by the corresponding update after segment pointers 2201.

[0373] In step 5701, the control unit 1305 change update before segmentpointers 2200 so as to indicate the segments 1800 having been indicatedby the update after segment pointers corresponding to the data record1500 made the object of write and all the parity records 1501 and setsnull values into the corresponding update after segment pointers 2201.

[0374] c) Synchronous Data Write Part k 1100

[0375]FIG. 58 shows the flow chart of a process performed by thesynchronous data write part k 1100. The flow chart shown in FIG. 58illustrates the flow of a process performed by the synchronous datawrite part k 1100 when it is called by the hit/miss judge part g 1000.The process flow of the synchronous data write part k 1100 shown in FIG.58 is approximately the same as that of the synchronous data write parte 500 shown in FIG. 45. Therefore, processings in FIG. 58 correspondingto those shown in FIG. 45 are designated by the same step numbers asthose used in FIG. 45 and the difference from FIG. 45 will now beexplained.

[0376] In step 5800, the control unit 1305 turns on a load request bit2203 corresponding to in-group other data records 702 which is notstored in the cache 1308.

[0377] The flows of processes performed by the other process parts orthe asynchronous record load part c 802 and the asynchronous recordwrite part a 103 have already been explained.

[0378] 3) Other Method 1 for Realization of Fourth Embodiment

[0379]FIG. 12 is a block diagram for explaining another method 1 whichrealizes the fourth embodiment. This method is different from the methodshown in FIGS. 10 and 11 in that the timing of generation of an updateafter parity record 108 is a timing when the update after parity record108 itself is written into a disk unit 1304. Namely, FIG. 12 shows theoperation of the control unit 1305 in the fourth embodiment in the casewhere the parity generation timing c shown in FIG. 74 is used as aparity generation timing.

[0380] In FIG. 12 too, by use of an asynchronous record write part b903, the control unit 1305 generates the update after parity record 108and in parallel therewith writes the generated record 108 into the disk1304 (in conjunction with data lines 906) in a manner similar to that inthe first embodiment shown in FIG. 3.

[0381] a) Hit/Miss Judge Part h 1200

[0382]FIG. 59 shows the flow chart of a process performed by a hit/missjudge part h 1200. The flow chart shown in FIG. 59 illustrates the flowof a process performed when a write request from the processor 1300 isreceived. The flow of a process performed by the hit/miss judge part h1200 when the release from a wait condition is made, is the same as theprocess flow shown in FIG. 27. The process flow of the hit/miss judgepart h 1200 shown in FIG. 59 is approximately the same as that of thehit/miss judge part f 900 shown in FIG. 52. Therefore, processings inFIG. 59 corresponding to those shown in FIG. 52 are designated by thesame step numbers as those used in FIG. 52 and the difference from FIG.52 will now be explained.

[0383] In step 5900, the control unit 1305 calls a synchronous datawrite part m 1201 unconditionally in order to receive data for a datarecord 1500 made the object of write from the processor 1300.

[0384] b) Synchronous Data Write Part m 1201

[0385] FIG 60 shows the flow chart of a process performed by thesynchronous data write part m 1201. The flow chart shown in FIG. 60illustrates the flow of a process performed by the synchronous datawrite part m 1201 when it is called by the hit/miss judge part h 1200.The process flow of the synchronous data write part m 1201 shown in FIG.60 is approximately the same as that of the synchronous data write partk 1100 shown in FIG. 58. Therefore, processings in FIG. 60 correspondingto those shown in FIG. 58 are designated by the step numbers as thoseused in FIG. 58 and the difference from FIG. 58 will now be explained.

[0386] In step 6000, the control unit 1305 checks whether all in-groupother data records 702 are stored in the cache 1308. If there is anyrecord 702 which is not stored in the cache 1308, the flow jumps to step5800. If the records 702 are stored in the cache 1308, the control unit1305 turns on write after bits 2202 corresponding to all update beforeparity records 107 (step 6001) and thereafter the flow jumps to step3303.

[0387] The flows of processes performed by the other process parts or anasynchronous record load part d 902 and the asynchronous record writepart b 906 have already been explained.

[0388] 4) Other Method 2 for Realization of Fourth Embodiment

[0389]FIG. 78 is a block diagram for explaining still another method 2which realizes the fourth embodiment. The method shown in FIG. 78 ischaracterized in that the generation of an update after parity record108 is made in asynchronism with a data transfer process of the controlunit 1305. Namely, FIG. 78 shows the operation of the control unit 1305in the fourth embodiment in the case where the parity generation timingd shown in FIG. 86 is used as a parity generation timing.

[0390] As shown in FIG. 78, the control unit 1305 generates an updateafter parity record 108 from an update after data record 106 andin-group other data records 702 by use of a parity generation unit b 703and a parity generation part b 7701 (in conjunction with data lines7702).

[0391] a) Hit/Miss judge Part m 7800

[0392]FIG. 82 shows the flow chart of a process performed by a hit/missjudge part m 7800. The hit/miss judge part m 7800 has two executionstart points. A first start point is a start point shown in FIG. 82 or astart point at which the execution is started when a write request fromthe processor is received. A second start point is a start point whenthe release from a wait condition is made. The flow of a processperformed in conjunction with the second start point is the same as theprocess flow of the hit/miss judge part a 100 shown in FIG. 27. Theprocess flow of the hit/miss judge part m 7800 shown in FIG. 82 isapproximately the same as that of hit/miss judge part c 1000 shown inFIG. 56. Therefore, processings in FIG. 82 corresponding to those shownin FIG. 56 and the difference from FIG. 56 will now be explained.

[0393] In step 4800, the control unit 1305 checks whether or not thereis any one on other data records 1500 in a parity group 1600 which doesnot exist in the cache 1308. In he case where all the data records existin the cache, the control unit 1305 turns on a parity generation bit2206 in step 7900 and thereafter the flow goes to step 5602.

[0394] 6. Fifth Embodiment

[0395] 1) Outline

[0396] A fifth embodiment is an embodiment in which the parity grouphit/miss judge process c 6700 is used. However, as shown in FIG. 87, theparity group hit/miss judge process a 6500, the parity group hit/missjudge process b 6600, the asynchronous process a 6800. The asynchronousprocess b 6900, the asynchronous process c 7000, the asynchronousprocess d 7100 and the parity generation timings a to d are relevant tothe fifth embodiment.

[0397] As has already been mentioned, information necessary forgenerating an updated value of a parity record 1501 includes one of thefollowing sets {circle over (1)} and {circle over (2)} of values:

[0398] {circle over (1)} the update before and update after values of adata record 1500 and an update before value of the parity record 1501;and

[0399] {circle over (2)} the update after value of the data record 1500and the values of all other data records 1500 in the same parity group.

[0400] In the fifth embodiment, in generating the updated value of theparity record 1501, a control unit 1305 selects one of the above sets ofvalues or records 1502 on the basis of the condition of storage of therecords 1502 in a cache 1308. FIG. 61 is a flow chart showing theoperation of the control unit 1305 in the fifth embodiment.

[0401] 2) Details of Process

[0402] When receiving a write request from a processor 1300, the controlunit 1305 checks the number of those records among update before parityrecords 107 and an update before data record 105 for a data record 1500made the object of write which do not exist in the cache 1308 (step6100).

[0403] In step 6101, the control unit 1305 checks the number of thoserecords among in-group other data records 702 (or other data records1500) in a parity group including the data record 1500 made the objectof write which do not exist in t-he cache 1308 (that is, the number ofdata records 1500 the update before and after segment pointers 2200 and2201 of each of which take both null values).

[0404] In step 6102, the control unit 1305 checks which of the numbersof records obtained in steps 6100 and 6101 is small. If there areselected the records the number of which is smaller, the overhead isless since the number of records 1502 to be loaded is small.

[0405] Accordingly, in the case where the number obtained in step 6100is smaller, the flow goes to step 6103 in order to generate an updatedvalue of a parity record 1501 from an update before value of the datarecord 1500 made the object of write and update before values of theparity records 1501. Be execution of the parity group hit/miss judgeprocess a 6500 is started from step 6103.

[0406] On the other hand, in the case where the number obtained in step1600 is not smaller, the flow goes to step 6106 in order to generate theupdated value of the parity record 1501 from the values of all the otherdata records 1500. The execution of the parity group hit/miss judgeprocess b 6600 is started from step 6106.

[0407] In step 6103, the judgement is made as to whether or not thewrite of the data record 1500 into a disk unit should be synchronized.In the case where the synchronization is made, there results in theselection of the asynchronous process a 6800. In step 6104. the hit/missjudge part a 100 is called. Calling the hit/miss judge part a 100 meansthat the parity generation timing a or b is selected as a paritygeneration timing. In this case, if the parity generation timing c or dis to be selected, the hit/miss judge part b 300 or i 7900 may be calledin lieu of the hit/miss judge part a 100.

[0408] In the case where the asynchronization is made, there results inthe selection of the asynchronous data process b 6900. In step 6105, thehit/miss judge part c 400 is called. Calling the hit/miss judge part c400 means that the parity generation timing a or b is selected as aparity generation timing. In this case, if the parity generation timingc or d is to be selected, the hit/miss judge part d 600 or k 8000 may becalled in lieu of the hit/miss judge part c 400.

[0409] In step 6106, the judgement is made as to whether or not thewrite of the data record 1500 into a disk unit should be synchronized.In the case where the synchronization is made, there results in theselection of the asynchronous process c 7000. In step 6107, the hit/missjudge part e 700 is called. Calling the hit/miss judge part e 700 meansthat the parity generation timing a or b is selected as a paritygeneration timing. In this case, if the parity generation timing c or dis to be selected, the hit/miss judge part f 900 or e 7700 may be calledin lieu of the hit/miss judge part e 700.

[0410] In the case where the asynchronization is made, there results inthe selection of the asyncronous process d 7100. In step 6105, thehit/miss judge part q 1000 is called. Calling the hit/miss judge part a1000 means that the parity generation timing a or b is selected as aparity generation timing. In this case, if the parity generation timingc or d is to be selected, the hit/miss judge part h 1200 or m 8100 maybe called in lieu of the hit/miss judge part q 1000.

[0411] According to the present invention, a process for a write requestissued from a processor in a disk array using the data distribution byrecord (or a disk array in levels 4 and 5 in the Patterson et al'article) can be performed at high speed. Namely, by using a disk cachein a control unit, the shortening of a response time seen from theprocessor can be realized by (1) shortening a processing time foracquisition of information necessary for generating an updated value ofa parity record and (2) asynchronizing processes generated attendantupon a write request as great as possible.

1. In a storage unit subsystem including a plurality of storage unitsfor which read/write is made in units of a record and a control unitwhich includes a cache memory, in which records in a record groupincluding m (m≧1) records and n (n ≧1) parity records for recovering thecontents of said m records are stored in said (m+n) storage units,respectively, said control unit comprising: means for checking, uponreception of a write request from a processor, whether or notinformation necessary for generating updated values of the parityrecords in the record group to which a record made the object of a writeprocess belongs exists in said cache memory; means for receiving writedata for the record made the object of the write process by said writerequest from said processor, storing said write data into said cachememory and reporting the completion of said write request to saidprocessor; means for performing a process for loading, informationnecessary for generation of the updated values of the parity recordswhich do not exist in said cache memory, from said storage units intosaid cache memory independently from a process to be performed attendantupon a read/write request from said processor; means for generating theupdated values of the parity records from the information necessary forgeneration of the updated values of the parity records and storing theupdated values into said cache memory, independently from the process tobe performed attendant upon the read/write request from said processor;and means for writing the updated values of the parity records from saidcache memory into said storage units independently from the process tobe performed attendant upon the read/write request from said processor.2. A storage unit subsystem according to claim 1, wherein said controlunit includes means for receiving the write data for the record made theobject of the write process by said write request from said processor,storing said write data into said cache memory and said storage unit andreporting the completion of said write request to said processor.
 3. Astorage unit subsystem according to claim 1, wherein said control unitincludes means for loading, information to be prepared in synchronismwith said write request, from said processor into said cache memory insynchronism with said write request.
 4. In a storage unit subsystemincluding a plurality of storage units for which read/write is made inunits of a record and a control unit which includes a cache memory, inwhich records in a record group including m (m≧1) records and n (n≧1)parity records for recovering the contents of said m records are storedin said (m+n) storage units, respectively, said control comprising:means for confirming, upon reception of a write request from saidprocessor, whether or not a record made the object of a write process isstored in said cache memory and storing the record made the object ofthe write process into said cache memory in the case where it is notstored in said cache memory; means for confirming whether or not all theparity records in the record group to which the record made the objectof the write process belongs are stored in said cache memory; means forwriting, all the parity records in said record group stored in saidcache memory and write data received from said processor for the recordmade the object of the write process, into said storage units; and meansfor generating updated values of the parity records from the write data,the record made the object of the write process and stored in said cachememory and all the parity records, storing the updated values into saidcache memory and reporting the completion of said write request to saidprocessor.
 5. A storage unit subsystem according to claim 4, whereinsaid control unit includes means for writing the updated values of theparity records from said cache memory into said storage unitsindependently from a process to be performed attendant upon a read/writerequest from said processor.
 6. A storage unit subsystem according toclaim 4, wherein said control unit includes: means for performing,independently from a process to be performed attendant upon a read/writerequest from said processor, a process which includes storing, theparity records which belong to said parity group but are not stored insaid cache memory, into said cache memory, generating the updated valuesof the parity records from the record in said cache memory made theobject of the write process and said write data in said cache memorywhen the last one of the parity records having not been in said cachememory is stored into said cache memory, and storing the updated valuesinto said cache memory.
 7. A storage unit subsystem according to claim4, wherein said control unit includes means for writing the updatedvalues of the parity records from said cache memory into said storageunits independently from a process to be performed attendant upon aread/write request from said processor.
 8. In a storage unit subsystemincluding a plurality of storage units for which read/write is made inunits of a record and a control unit which includes a cache memory, inwhich records in a record group including m (m≧1) records and n (n≧1)parity records for recovering the contents of said m records are storedin said (m+n) storage units, respectively, said control unit comprising:means for confirming, upon reception of a write request from aprocessor, whether or not a record made the object of a write process isstored in said cache memory; means for storing, the record which is madethe object of the write process but is not stored in said cache memory,from said storage unit into said cache memory; means for confirmingwhether or not there is any one among the parity records in said recordgroup which is not stored in said cache memory; means for writing, writedata received from said processor for the record made the object of thewrite process, into said storage unit; and means for storing said writedata into a region of said cache memory other than a region where therecord made the object of the write process has already been stored andreporting the completion of said write request to said processor.
 9. Astorage unit subsystem according to claim 8, wherein said control unitincludes: means for confirming whether or not all the parity records inthe record group to which the record made the object of the writeprocess by said write request belongs are stored in said cache memory;means for storing, the parity records which belong to said record groupbut are not stored in said cache memory, into said cache memoryindependently from a process to be performed attendant upon a read/writerequest from said processor; and means for performing, independentlyfrom the process to be performed attendant upon the read/write requestfrom said processor, a process which includes generating the updatedvalues of the parity records from the record in said cache memory madethe object of the write process, said write data in said cache memoryand the parity records in said cache memory and in parallel therewithwriting the updated values into said storage units.
 10. In a storageunit subsystem including a plurality of storage units for whichread/write is made in units of a record and a control unit whichincludes a cache memory, in which records in a record group including m(m≧1) records and n (n≧1) parity records for recovering the contents ofsaid m records are stored in said (m+n) storage units, respectively,said control unit comprising: means for confirming, upon reception of awrite request from a processor, whether or not a record made the objectof a write process and all the parity records in the record group towhich the record made the object of the write process belongs are storedin said cache memory; means for writing, write data received from saidprocessor for the record made the object of the write process, into saidcache memory in the case where the record made the object of the writeprocess and all the parity records are stored in said cache memory; andmeans for generating updated values of the parity records from saidwrite data, the record in said cache memory made the object of the writeprocess and all the parity records in said cache memory, storing theupdated values into said cache memory and reporting the completion ofsaid write request to said processor.
 11. A storage unit subsystemaccording to claim 10, wherein said control unit includes means forwriting, said write data received from said processor and the updatedvalues of the parity records, from said cache memory into said storageunits independently from a process to be performed attendant upon aread/write request from said processor.
 12. A storage unit subsystemaccording to claim 10, wherein said control unit includes; means forstoring, those records among the record made the object of the writeprocess and the parity records in said record group which are not storedin said cache memory, into said cache memory independently from aprocess to be performed attendant upon a read/write request from saidprocessor and for performing, when the last record among the record madethe object of the write process and the parity records in said recordgroup which have not been stored in said cache memory is stored intosaid cache memory, a process which includes generating the updatedvalues of the parity records from the record in said cache memory madethe object of the write process, said write data received from saidprocessor and all the parity records in said cache memory and storingthe updated values into said cache memory.
 13. A storage unit subsystemaccording to claim 12, wherein said control unit includes means forwriting, said write data received from said processor and the updatedvalues of the parity records, from said cache memory into said storageunits independently from the process to be performed attendant upon theread/write request from said processor.
 14. In a storage unit subsystemincluding a plurality of storage units for which read/write is made inunits of a record and a control unit which includes a cache memory, inwhich records in a record group including m (m≧1) records and n (n≧1)parity records for recovering the contents of said m records are storedin said (m+n) storage units, respectively, said control unit comprising:means for writing, upon reception of a write request from a processor,write data received from said processor for a record made the object ofa write process into said storage unit and said cache memory andreporting the completion of said write request to said processor; meansfor confirming whether or not the record made the object of the writeprocess by said write request and all the parity records in the paritygroup to which the record made the object of the write process belongsare stored in said cache memory; means for storing, those records amongthe record made the object of the write process and the parity recordsin said record group which are not stored in said cache memory, intosaid cache memory independently from a process to be performed attendantupon a read/write request from said processor; and means for performing,independently from the process to be performed attendant upon theread/write request from said processor, a process which includesgenerating updated values of the parity records from the record in saidcache memory made the object of the write process, said write datastored in a region of said cache memory other than a region for storageof the record made the object of the write process and the parityrecords stored in said cache memory and in parallel therewith writingthe updated values into said storage units.
 15. A storage unit subsystemaccording to claim 14, wherein said control unit includes means forwriting, said write data received from said processor, from said cachememory into said storage unit independently from the process to beperformed attendant upon the read/write request from said processor. 16.In a storage unit subsystem including a plurality of storage units forwhich read/write is made in units of a record and a control unit whichincludes a cache memory, in which records in a record group including m(m≧1) records and n (n≧1) parity records for recovering the contents ofsaid m records are stored in said (m+n) storage units, respectively,said control unit comprising: means for confirming, upon reception of awrite request from a processor, whether or not a parity record in therecord group to which a record made the object of a write processbelongs and all other records in the parity group which are other thanthe record made the object of the write process, are stored in saidcache memory; means for writing, write data received from said processorfor the record made the object of the write process, into said storageunit in the case where said records are stored in said cache memory; andmeans for generating updated values of the parity records from saidwrite data, the parity record in said record group which is stored insaid cache memory and all the other records in said record group whichare other than the record made the object of the write process and arestored in said cache memory, storing the updated values into said cachememory and reporting the completion of said write request to saidprocessor.
 17. A storage unit subsystem according to claim 16, whereinsaid control unit includes means for writing the updated values of theparity records from said cache memory into said storage unitsindependently from a process to be performed attendant upon a read/writerequest from said processor.
 18. A storage unit subsystem according toclaim 16, wherein in the case where there is any one among the parity insaid record in said record group and all the other records record groupother than the record made the object of the write process which is notstored in said cache memory, said control unit includes: means forwriting, said write data received from said processor for the recordmade the object of the write process, into said storage unit; means forstoring said write data into said cache memory and reporting thecompletion of said write request to said processor; and means forstoring, those records among the parity record in said record group andall the other records in said record group other than the record madethe object of the write process which are not stored in said cachememory, into said cache memory independently from a process to beperformed attendant upon a read/write request from said processor andfor performing, when the last record in the records which have not beenstored in said cache memory is stored into said cache memory, a processwhich includes generating the updated values of the parity records fromsaid write data, the parity record in said record group which is storedin said cache memory and all the other records in said record groupwhich are other than the record made the object of the write process andare stored in said cache memory and storing the updated values into saidcache memory.
 19. A storage unit subsystem according to claim 18,wherein said control unit includes means for writing the updated valuesof the parity records from said cache memory into said storage unitsindependently from the process to be performed attendant upon theread/write request from said processor.
 20. In a storage unit subsystemincluding a plurality of storage units for which read/write is made inunits of a record and a control unit which includes a cache memory, inwhich records in a record group including m (m≧1) records and n (n≧1)parity records for recovering the contents of said m records are storedin said (m+n) storage units, respectively, said control unit comprising:means for performing, upon reception of a write request from aprocessor, a process which includes storing write data received for arecord made the object of a write process into said cache memory andsaid storage unit and reporting the completion of said write request tosaid processor; means for confirming whether or not a parity record inthe record group to which the record made the object of the writeprocess by said write request belongs and all other records in saidrecord group which are other than the record made the object of thewrite process, are stored in said cache memory; means for storing, thoserecords among the parity record and all the other records in said recordgroup which are not stored in said cache memory, into said cache memoryindependently from a process to be performed attendant upon a read/writerequest from said processor; and means for performing, independentlyfrom the process to be performed attendant upon the read/write requestfrom said processor, a process which includes generating updated valuesof the parity records from said write data, the parity record in saidrecord group which is stored in said cache memory and all the otherrecords in said record group which are other than the record made theobject of the write process and are stored in said cache memory and inparallel therewith writing the updated values into said storage units.21. In a storage unit subsystem including a plurality of storage unitsfor which read/write is made in units of a record and a control unitwhich includes a cache memory, in which records in a record groupincluding m (m≧1) records and n (n≧1) parity records for recovering thecontents of said m records are stored in said (m+n) storage units,respectively, said control unit comprising: means for confirming, uponreception of a write request from a processor, whether or not a parityrecord in the record group to which a record made the object of a writeprocess belongs and all other records in said record group which areother than the record made the object of the write process, are storedin said cache memory; means for writing, write data received from saidprocessor for the record made the object of the write process, into saidcache memory in the case where said records are stored in said cachememory; and means for generating updated values of the parity recordsfrom said write data, the parity record in said record group which isstored in said cache memory and all the other records in said recordgroup which are other than the record made the object of the writeprocess and are stored in said cache memory, storing the updated valuesinto said cache memory and reporting the completion of said writerequest to said processor.
 22. A storage unit subsystem according toclaim 21, wherein said control unit includes means for writing saidwrite data received from said processor and the updated values of theparity records, from said cache memory into said storage unitsindependently from a process to be performed attendant upon a read/writerequest from said processor.
 23. A storage unit subsystem according toclaim 21, wherein said control units includes means for storing, thoserecords among the parity record in said record group and all the otherrecords in said record group other than the record made the object ofthe write process which are not stored in said cache memory, into saidcache memory independently from a process to be performed attendant upona process read/write request from said processor and for performing,when the last record in the records which have not been stored in saidcache memory is stored into said cache memory, a process which includesgenerating the updated values of the parity records from said writedata, the parity record in said record group which is stored in saidcache memory and all the other records in said record group which areother than the record made the object of the write process and arestored in said cache memory and storing the updated values into saidcache memory.
 24. A storage unit subsystem according to claim 23,wherein said control unit includes means for writing, said write datareceived from said processor and the updated values of the parityrecords from said cache memory into said storage units.
 25. In a storageunit subsystem including a plurality of storage units for whichread/write is made in units of a record and a control unit whichincludes a cache memory, in which records in a record group including m(m≧1) records and n (n≧1) parity records for recovering the contents ofsaid m records are stored in said (m+n) storage units, respectively,said control unit comprising: means for performing, upon reception of awrite request from a processor, a process which includes storing writedata received for a record made the object of a write process into saidcache memory and reporting the completion of said write request to saidprocessor; means for confirming whether or not a parity record in therecord group to which the record made the object of the write process bysaid write request belongs and all other records in said record groupwhich are other than the record made the object of the write process,are stored in said cache memory; means for storing, any one among theparity record in said record group and all the other records in saidrecord group other than the record made the object of the write processwhich is not stored in said cache memory, into said cache memoryindependently from a process to be performed attendant upon a read/writerequest from said processor; and means for performing, independentlyfrom the process to be performed attendant upon the read/write requestfrom said processor, a process which includes generating the updatedvalues of the parity records from said write data, the parity record insaid record group which is stored in said cache memory and all the otherrecords in said record group which are other than the record made theobject of the write process and are stored in said cache memory and inparallel therewith writing the updated values into said storage units.26. A storage unit subsystem according to claim 25, wherein said controlunit includes means for writing, said write data received from saidprocessor, from said cache memory into said storage unit independentlyfrom the process to be performed attendant upon the read/write requestfrom said processor.
 27. In a storage unit subsystem including aplurality of storage units for which read/write is made in units of arecord and a control unit which includes a cache memory, in whichrecords in a record group including m (m≧1) records and n (n≧1) parityrecords for recovering the contents of said m records are stored in said(m+n) storage units, respectively, said control unit comprising: firstmeans for confirming, when said control unit receives a write requestfrom a processor, the number of those records, among a record made theobject of a write process by said write request and all the parityrecords in the record group to which the record made the object of thewrite process by said write request belongs, which are stored in saidcache memory; second means for confirming, when said control unitreceives said write request from said processor, the number of thoserecords, among a parity record in said record group to which the recordmade the object of the write process by said write request belongs andall other records in said record group which are other than the recordmade the object of the write process, which are stored in said cachememory; and third means for determining, on the basis of the numbersconfirmed by said first and second means, whether all the parity recordsin said record group to which the record made the object of the writeprocess by said write request belongs or the parity record in saidrecord group to which the record made the object of the write process bysaid write request and all the other records in said record group whichare other than the record made the object of the write process, shouldbe used in generating updated values of the parity records.
 28. In astorage unit subsystem including a plurality of storage units for whichread/write is made in units of a record and a control unit whichincludes a cache memory, in which records in a record group including m(m≧1) records and n (n≧1) parity records for recovering the contents ofsaid m records are stored in said (m+n) storage units, respectively,said control unit comprising: means for confirming, upon reception of awrite request from a processor, whether or not a record made the objectof a write process is stored in said cache memory; means for storing,the record which is made the object of the write process but is notstored in said cache memory, from said storage unit into said cachememory; means for writing, write data received from said processor forthe record made the object of the write process, into said storage unit;means for storing said write data into a region of said cache memoryother than a region where the record made the object of the writeprocess has already been stored and reporting the completion of saidwrite request to said processor; means for storing, the parity record insaid record group which is not stored in said cache memory, into saidcache memory independently from a process to be performed attendant upona read/write request from said processor; means for performing,independently from the process to be performed attendant upon theread/write request from said processor, a process which includesgenerating updated values of the parity records from the record in saidcache memory made the object of the write process, said write datastored in said cache memory and the parity record stored in said cachememory and storing the updated values into said cache memory; and meansfor writing the updated values of the parity records from said cachememory into said storage units independently from the process to beperformed attendant upon the read/write request from said processor. 29.In a storage unit subsystem including a plurality of storage units forwhich read/write is made in units of a record and a control unit whichincludes a cache memory, in which records in a record group including m(m≧1) records and n (n≧1) parity records for recovering the contents ofsaid m records are stored in said (m+n) storage units, respectively,said control unit comprising: means for confirming, upon reception of awrite request from a processor, whether or not a record made the objectof a write process and all the parity records in the record group towhich the record made the object of the write process by said writerequest, are stored in said cache memory; means for writing write datareceived from said processor or the record made the object of the writeprocess into new region of said cache memory and reporting thecompletion of said write request to said processor; means for storing,the record which is made the object of the write process but is notstored in said cache memory and the parity records which are included insaid record group but are not stored in said cache memory, into newregions of said cache memory independently from a process to beperformed attendant upon a read/write request from said processor; meansfor performing, independently from the process to be performed attendantupon the read/write request from said processor, a process whichincludes generating updated values of the parity records from the recordin said cache memory made the object of the write process, said writedata received for the record made the object of the write process andstored in the new region of said cache memory and the parity records insaid cache memory and storing the updated values into said cache memory;and means for writing the updated values of the parity records or saidwrite data received for the record made the object of the write process,from said cache memory into said storage units or unit independentlyfrom the process to be performed attendant upon the read/write requestfrom said processor.
 30. In a storage unit subsystem including aplurality of storage units for which read/write is made in units of arecord and a control unit which includes a cache memory, in whichrecords in a record group including m (m≧1) records and n (n≧1) parityrecords for recovering the contents of said m records are stored in said(m+n) storage units, respectively, said control unit comprising: meansfor confirming, upon reception of a write request from a processor,whether or not a parity record in the record group to which s recordmade the object of a write process belongs and all other records in saidrecord group which are other than the record made the object of thewrite process, are stored in said cache memory; means for storing, writedata received from said processor for the record made the object of thewrite process, into said cache memory and said storage unit andreporting the completion of said write request to said processor; meansfor storing, those records among the parity record and all the otherrecords in said record group which are not stored in said cache memory,into said cache memory independently from the process to be performedattendant upon the read/write request from said processor; means forperforming, independently from the process to be performed attendantupon the read/write request from said processor, a process whichincludes generating updated values of the parity records from said writedata, the parity record in said record group which is stored in saidcache memory and all the other records in said record group which areother than the record made the object of the write process and arestored in said cache memory and storing the updated values into saidcache memory; and means for writing the updated values of the parityrecords from said cache memory into said storage units independentlyfrom the process to be performed attendant upon the read/write requestfrom said processor.
 31. In a storage unit subsystem including aplurality of storage units for which read/write is made in units of arecord and a control unit which includes a cache memory, in whichrecords in a record group including m (m≧1) records and n (n≧1) parityrecords for recovering the contents of said m records are stored in said(m+n) storage units, respectively, said control unit comprising: meansfor confirming, upon reception of a write request from a processor,whether or not a parity record in the record group to which a recordmade the object of a write process belongs and all other records in saidrecord group which are other than the record made the object of thewrite process, are stored in said cache memory: means for storing, writedata received from said processor for the record made the object of thewrite process, into said cache memory and reporting the completion ofsaid write request to said processor: means for storing, those recordsamong the parity record and all the other records in said record groupwhich are not stored in said cache memory, into said cache memoryindependently from a process to be performed attendant upon a read/writerequest from said processor; means for performing, independently fromthe process to be performed attendant upon the read/write request fromsaid processor, a process which includes generating updated values ofthe parity records from said write data, the parity record in saidrecord group which is stored in said cache memory and all the otherrecords in said record group which are other than the record made theobject of the write process and are stored in said cache memory andstoring the updated values into said cache memory; and means forwriting, the updated values of the parity records or said write datareceived for the record made the object of the write process, from saidcache memory into said storage units or unit independently from theprocess attendant upon the read/write request from said Processor.